Comment éditer le fichier custom_port.cpp
Re: Comment éditer le fichier custom_port.cpp
pour le port B il suffit de le configurer normalement, si tu veux 4 steppers tu mets le port B en mode stepper dans l'interface. Ensuite tu peux le configurer comme écrit dans le tuto stepper
Administrateur - Forum arpschuino
Re: Comment éditer le fichier custom_port.cpp
Hello,
Dans ton cas il faut mettre le portA en custom et le portB en mode stepper normal, ce qui te permet de le configurer.
Le mode custom se définit par port, pas pour l'ensemble de la carte.
Dans ton cas il faut mettre le portA en custom et le portB en mode stepper normal, ce qui te permet de le configurer.
Le mode custom se définit par port, pas pour l'ensemble de la carte.
Re: Comment éditer le fichier custom_port.cpp
Oups j'avais pa vu, ma réponse fait doublon avec celle d'Eric
Re: Comment éditer le fichier custom_port.cpp
Bonjour,
Super, bien compris pour le port A en mode custom et le port B, je le configure avec l'interface web.
Pour la fonction void action_A, j'ai fait cela qu'en pensez vous ? cela le fait ? je vais repartir en résidence fin de semaine pour faire tout les derniers réglages.
Merci pour votre patience et vos explications !
Bonne journée.
Super, bien compris pour le port A en mode custom et le port B, je le configure avec l'interface web.
Pour la fonction void action_A, j'ai fait cela qu'en pensez vous ? cela le fait ? je vais repartir en résidence fin de semaine pour faire tout les derniers réglages.
Code : Tout sélectionner
//////////// port A //////////////
void setupA() //this loop is executed once at startup
{
portA.setNbDmxChannels(8);
for(int i=0;i<8;i++) /// init des pins du port B en mode sortie ///
{
pinMode(Arp[i], OUTPUT);
}
}
void action_A(const std::vector<uint8_t> & DMXslice) //this loop is executed at each signal reception
{
uint16_t m_target_level[4];
for (int i = 0; i < 4; ++i) ///action pour les sortie PWM, DMX 16 bits avec courbes pour leds///
{
m_target_level[i] = DMXslice[i * 2] << 8 | DMXslice[i * 2 + 1]; // level= DMXslice[i*2] << 8 | DMXslice[i*2+1];
uint32_t level32 = ((m_target_level[i] + 1) * (m_target_level[i] + 1)) - 1; // uint32_t level32 =((level+1)*(level+1))-1;
m_target_level[i] = level32 >> (32 - 14); // level = level32 >>(32-m_pwmRes); // 14 bits résolution optimale
analogWrite(Arp[i], m_target_level[i]); // ecrit en sortie analogique la valeur de m_target_level[i] dans Arp[i]
}
for (int i = 4; i < 8; ++i) ///action pour les sortie ONOFF///
{
if (DMXslice[i] > 127)
{
digitalWrite(Arp[i], HIGH);
}
else
{
digitalWrite(Arp[i], LOW);
}
}
}
void at_each_loop_A() //this loop is executed continuously
{
}
Bonne journée.
Re: Comment éditer le fichier custom_port.cpp
Oui ça m'a l'air pas mal pour la fonction action_A()
A la place de 32-14, mettre directement 18 mais c'est un détail.
Dans le setup par contre il faut configurer les sorties PWM :
https://randomnerdtutorials.com/esp32-pwm-arduino-ide/
A la place de 32-14, mettre directement 18 mais c'est un détail.
Dans le setup par contre il faut configurer les sorties PWM :
https://randomnerdtutorials.com/esp32-pwm-arduino-ide/
Re: Comment éditer le fichier custom_port.cpp
Ha oui j'oubliais : avec l'esp32, on n'utilise pas analogWrite(channel, dutycycle) mais ledcWrite(channel, dutycycle)
Comme expliqué dans le lien du précédent post, ce sont des spécificités ESP32 pour le PWM.
Comme expliqué dans le lien du précédent post, ce sont des spécificités ESP32 pour le PWM.
Re: Comment éditer le fichier custom_port.cpp
ok alors voila la retouche :
Je vais tester cela et je vous tiens au courant !
Merci
Code : Tout sélectionner
//////////// port A //////////////
// the number of the LED pin
const int ledPin = 16; // 16 corresponds to GPIO16
// setting PWM properties
const int freq = 5000;
const int ledChannel = 0; //il existe des channels de 0 à 15
const int resolution = 14;
void setupA() //this loop is executed once at startup
{
portA.setNbDmxChannels(8);
for(int i=0;i<8;i++) /// init des pins du port B en mode sortie ///
{
pinMode(Arp[i], OUTPUT);
}
// configure LED PWM functionalitites
ledcSetup(ledChannel, freq, resolution);
// attach the channel to the GPIO to be controlled
ledcAttachPin(ledPin, ledChannel);
}
void action_A(const std::vector<uint8_t> & DMXslice) //this loop is executed at each signal reception
{
uint16_t m_target_level[4];
for (int i = 0; i < 4; ++i) ///action pour les sortie PWM, DMX 16 bits avec courbes pour leds///Arp0Arp1Arp2Arp3
{
m_target_level[i] = DMXslice[i * 2] << 8 | DMXslice[i * 2 + 1]; // level= DMXslice[i*2] << 8 | DMXslice[i*2+1];
uint32_t level32 = ((m_target_level[i] + 1) * (m_target_level[i] + 1)) - 1; // uint32_t level32 =((level+1)*(level+1))-1;
m_target_level[i] = level32 >> (32-resolution); // level = level32 >>(32-resolution); // 14 bits résolution optimale
ledcWrite(Arp[i], m_target_level[i]); // écrit en sortie analogique la valeur de m_target_level[i] dans Arp[i]
}
for (int i = 4; i < 8; ++i) ///action pour les sortie ONOFF///Arp4Arp5Arp6Arp7
{
if (DMXslice[i] > 127)
{
digitalWrite(Arp[i], HIGH);
}
else
{
digitalWrite(Arp[i], LOW);
}
}
}
void at_each_loop_A() //this loop is executed continuously
{
}
Merci
Re: Comment éditer le fichier custom_port.cpp
c'est cool, tu avances bien
heureux que le custom port serve aux utilisateurs. Il faut certes mettre les mains dans le cambouis, mais vu qu'on ne peut pas couvrir TOUS les cas dans le firmware, ça permet de pouvoir gérer des cas particuliers. Dans le spectacle, la limite reste l'imagination. Ce que les "grandes" entreprises proposent ne le permettent pas et on est fiers de pouvoir apporter un peu de flexibilité dans ce monde totalement fermé, permettre à des professionnels de rêver pour faire rêver les spectateurs ...
heureux que le custom port serve aux utilisateurs. Il faut certes mettre les mains dans le cambouis, mais vu qu'on ne peut pas couvrir TOUS les cas dans le firmware, ça permet de pouvoir gérer des cas particuliers. Dans le spectacle, la limite reste l'imagination. Ce que les "grandes" entreprises proposent ne le permettent pas et on est fiers de pouvoir apporter un peu de flexibilité dans ce monde totalement fermé, permettre à des professionnels de rêver pour faire rêver les spectateurs ...
Administrateur - Forum arpschuino
Re: Comment éditer le fichier custom_port.cpp
Oui bravo c'est presque ça.
Mais il faut configurer chaque output PWM individuellement. par exemple avec une boucle for :
Mais il faut configurer chaque output PWM individuellement. par exemple avec une boucle for :
Code : Tout sélectionner
for(int i=0;i<4;i++)
{
// configure LED PWM functionalitites
ledcSetup(i, freq, resolution);
// attach the channel to the GPIO to be controlled
ledcAttachPin(Arp[i], i);
}