Aller au contenu

Messages recommandés

Posté(e) (modifié)

Bonjour, j'ai un Esp 32 c3 super mini, trois boutons et trois leds qui son reliés au ports:

boutons: 0, 1 et 5 du esp.

leds: 2, 3 et 4 du esp

J'ai vue sur quelques fotos sur internet que ceux-ci sont des ports analogique.

Sur ce moi je veux que quand un des boutons est pressé un des led s'allume et que le moniteur montre la valeur du bouton, pour sa j'ai ce code.

Puis-je lire les boutons sur des ports digitaux??

 

const int led1 = 3;
const int led2 = 2;
const int led3 = 4;

const int btn1 = 0;
const int btn2 = 1;
const int btn3 = 5;

int valbtn1;
int valbtn2;
int valbtn3;

void setup() {
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);

pinMode(btn1, INPUT);
pinMode(btn2, INPUT);
pinMode(btn3, INPUT);
}

void loop() {

Serial.println(valbtn1);
  
valbtn1 = analogRead(btn1);
valbtn2 = analogRead(btn2);
valbtn3 = analogRead(btn3);

if (valbtn1 > 1000)
{digitalWrite(led1, HIGH);
 delay(200);
 digitalWrite(led1, LOW);}

if (valbtn2 > 1000)
{digitalWrite(led2, HIGH);
 delay(200);
 digitalWrite(led2, LOW);}

if (valbtn3 > 1000)
{digitalWrite(led3, HIGH);
 delay(200);
 digitalWrite(led3, LOW);}
}

Mais les leds clignotent et sur le moniteur j'ai cette ereur: 

e ADC_ONESHOT_FORCE_USE_ADC2_ON_C3 to force use ADC2
E (1118) ADC: ADC2 is no longer supported, please use ADC1. Search for errata on espressif website for more details. You can enable ADC_ONESHOT_FORCE_USE_ADC2_ON_C3 to force use ADC2

Aidez moi SVP!!!!

1697788467682-c52ebfb49ceb4bb084b63cc4c4ea94ca-goods.webp

Modifié (le) par Canivete
  • 4 months later...
Posté(e) (modifié)

je pense que tu t"y prends pas correctement, il faut utiliser les fonctions d'interruption.

j'ai récement expérimenté un truc pareil pour commencer à me faire la main sur ESP (je débute moi aussi) , ici pour une led allumé, l'autre éteinte, et ca s'inverse quand tu appui sur le bouton

 

extrait de code

// Fonction d'interuption sur l'interupteur
void IRAM_ATTR fonction_ISR() {
  if (millis() - lastMillis > 10) {
    // Software debouncing buton
    //ets_printf("ISR triggered\n");
    buttonState = !buttonState;
    digitalWrite(ledPinA, buttonState);
    digitalWrite(ledPinB, !buttonState);
 
  flagBouton = 1;
 
  }
  lastMillis = millis();
}
 
void setup() {
  //Definition GPIO
  pinMode(buttonPin, INPUT_PULLUP);
  pinMode(ledPinA, OUTPUT);
  pinMode(ledPinB, OUTPUT);
  // détectection de changement d'état (valeur possible ; LOW, HIGH, RISING, FALLING, CHANGE)
  attachInterrupt(buttonPin, fonction_ISR, CHANGE);
 
void loop() {
 
 
 
  if (flagBouton == 1) {
    client.publish(topic, "Bouton enclenché");
    flagBouton = 0;
  }
Modifié (le) par urzhi

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...