Mini proiect (31) - Conectarea unui buton RGB (C+) la ESP32

Conectarea unui buton RGB (C+) la ESP32

Azi m-am jucat chinuit cu un căcat de butonaș RGB. Până la urmă nu ar fi chiar așa de greu de conectat la un ESP32, doar că nu am găsit documentație. În princpiu a trebui sa ghicesc cum ar trebui sa conectez acest switch , și practic am facut un fel de "reverse engineering". 

Switch-ul are 6 pini (în sensul netrigonometric) :

  • NO - Normal open
  • G - green
  • R - Red
  • NO - Normal open
  • B - Blue
  • C+ - anode comun 

  Pinul NO l-am legat la C+ la pinul GPIO23 și 3V3 al ESP32. Din câte am observat switch-ul este întotdeauna deschis, și dacă este apăsat face legatura cu celălalt pin NO (închide circuitul între cei doi pini NO). În același timp pinul C+ este de fapt anodul pentru dioda RGB din interiorul switch-ului (ca în schema de mai jos).

Eu am legat pe rând cei trei pini R,G, B la GND, și am testat (vezi pozele de mai jos).Deci dacă se apasă butonul se închide circuitul se aprinde unul din LED-uri (depinde care pin R,G,B este conectat), și la pinul 23 de la ESP32 o să fie 3.3V.  Schema întradevăr este total îmbârligată , dar funcționează. Am desenat cu linii punctate conexinile la R si B pentru ca arăta că le-am testat pe rând.

Componente:

Schema electronica/sistem:

Conectarea unui buton RGB (C+) la ESP32

LED-ul albastru este activat atunci cand pinul B al switch-ului este conectat la GND , si butonul este apasat .


LED-ul verde este activat atunci cand pinul G al switch-ului este conectat la GND, si butonul este apasat . 

 

LED-ul roșu este activat atunci cand pinul R al switch-ului este conectat la GND, si butonul este apasat.  


 Iar în ESP32 de fiecare dată citesc pinul GPIO23 și afișez pe serial valoarea variabilei buton.

Cod de test:
/*
Florin Simedru
Complete project details at https://automatic-house.blogspot.com
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
*/
// constants won't change. They're used here to set pin numbers:
const int buttonPin = 23; // the number of the pushbutton pin
const int ledPin = 2; // the number of the LED pin
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
Serial.begin(115200);
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}
void loop()
{
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH)
{
Serial.print("button = ");
Serial.println(buttonState);
// turn LED on:
digitalWrite(ledPin, HIGH);
}
else
{
// turn LED off:
digitalWrite(ledPin, LOW);
}
}

 

 

 Documentatie proiect:

Pentru întrebari și/sau consultanță tehnică vă stau la dispozitie pe blog sau pe email simedruflorin@automatic-house.ro. O seară/zi plăcută tuturor !

Etichete

Afișați mai multe

Arhiva

Afișați mai multe