gabitzu2006 Postat Martie 21, 2021 Autor Partajează Postat Martie 21, 2021 (editat) multumesc mult pentru ajutor! noapte buna! LE: am schimbat pinul digital (acum am conectat relay6 la pinul 13) si merge f bine. Ramane sa imi dau seama cum imi dau seama ca un buton a fost depresat prima directie e sa caut protocolul NEC. #include <IRremote.h> int RECV_PIN = 2; // the pin where you connect the output pin of sensor int relay1 = 4; int relay2 = 5; int relay3 = 6; int relay4 = 7; int relay5 = 8; int relay6 = 13; int relayPins[] = {relay1, relay2, relay3, relay4, relay5, relay6}; //array with all the relays' pins int relayStates[] = {0,0,0,0,0,0}; //the initial state of relays int i=0; //relay index for the arrays #define code1 16753245 // code received from button no. 1 #define code2 16736925 // code received from button no. 2 #define code3 16769565 // code received from button no. 3 #define code4 16720605 // code received from button no. 4 #define code5 16712445 // code pt 5 #define code6 16718055 // cod pt up #define code7 16730805 // cod pt down #define code8 16726215 // cod pt on/off IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(115200); irrecv.enableIRIn(); // Start the receiver for(int i = 0; i < 5; i++){ pinMode(relayPins[i], OUTPUT); } } void loop() { static int idx = -1; //index iesire if (irrecv.decode(&results)) { unsigned int value = results.value; switch(value) { case code1: idx = 0; //prima iesire, relayStates[idx] ^= 1; //inverseaza starea break; case code2: idx = 1; relayStates[idx] ^= 1; break; case code3: idx = 2; relayStates[idx] ^= 1; break; case code4: idx = 3; relayStates[idx] ^= 1; break; case code5: idx = 4; relayStates[idx] ^= 1; break; case code6: //up idx++; // selecteaza urmatoarea iesire idx %=5; //daca e 5, ia-o de la capat relayStates[idx] = 1; //fa iesirea 1 break; case code7: //down idx--; //selecteaza iesirea precedenta if(idx < 0){ //daca e negativa, iao pe cea mai mare idx=4; } relayStates[idx] = 1; //fa iesirea 1 break; case code8: relayStates[5] ^= 1; digitalWrite(relay6, relayStates[5]); break; //default : idx = -1; } for(int i = 0; i < 5; i++){ // modifica iesirea in functie de testele anterioare. if(i == idx){ digitalWrite(relayPins[i], relayStates[i]); } else { digitalWrite(relayPins[i], LOW); } } irrecv.resume(); // Receive the next value } //if (irrecv.decode(&results)) } //loop() Editat Martie 21, 2021 de gabitzu2006 update Link spre comentariu
gabitzu2006 Postat Martie 21, 2021 Autor Partajează Postat Martie 21, 2021 (editat) A command is transmitted only once, even when the key on the remote control remains pressed. Every 110ms a repeat code is transmitted for as long as the key remains down. This repeat code is simply a 9ms AGC pulse followed by a 2.25ms space and a 560µs burst. cred ca de aici trebuie plecat. daca poate ajuta cineva, ca sa nu reinventam apa calda, i-as fi recunoscator. se pare ca nu e asa de bine sa folosesc pinul 13, pentru ca la orice restart sau pornire, acesta va clipi. ar trebui sa modific codul bootloaderului ca sa nu mai clipeasca la pornire. totusi nu inteleg de ce folosind orice alt pin digital pt ledul 6, acesta lumineaza foarte slab. pentru problema cu detectarea momentului cand butonul este depresat, cred ca ar trebui verificat periodic ca exista acel mesaj de repeat, cel cu codul 429... cand acel mesaj nu mai apare o perioada de timp, sa zicem 110ms, se dezactiveaza respectivul pin digital. nu stiu cum sa transpun asta in cod, insa. am rezolvat problema cu pinul pentru led6(de fapt, e relay6). Pinul respectiv nu fusese declarat ca output. acum am mutat pe pin 12 si l-am declarat ca iesire si functioneaza fara probleme. Mai lucrez la partea cu sfarsitul apasarii de buton... atasez noul sketch: #include <IRremote.h> int RECV_PIN = 2; // the pin where you connect the output pin of sensor int relay1 = 4; int relay2 = 5; int relay3 = 6; int relay4 = 7; int relay5 = 8; int relay6 = 12; int relayPins[] = {relay1, relay2, relay3, relay4, relay5, relay6}; //array with all the relays' pins int relayStates[] = {0,0,0,0,0,0}; //the initial state of relays int i=0; //relay index for the arrays #define code1 16753245 // code received from button no. 1 #define code2 16736925 // code received from button no. 2 #define code3 16769565 // code received from button no. 3 #define code4 16720605 // code received from button no. 4 #define code5 16712445 // code pt 5 #define code6 16718055 // cod pt up #define code7 16730805 // cod pt down #define code8 16726215 // cod pt on/off IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(115200); irrecv.enableIRIn(); // Start the receiver for(int i = 0; i < 5; i++){ pinMode(relayPins[i], OUTPUT); pinMode(12, OUTPUT); } } void loop() { static int idx = -1; //index iesire if (irrecv.decode(&results)) { unsigned int value = results.value; switch(value) { case code1: idx = 0; //prima iesire, relayStates[idx] ^= 1; //inverseaza starea break; case code2: idx = 1; relayStates[idx] ^= 1; break; case code3: idx = 2; relayStates[idx] ^= 1; break; case code4: idx = 3; relayStates[idx] ^= 1; break; case code5: idx = 4; relayStates[idx] ^= 1; break; case code6: //up idx++; // selecteaza urmatoarea iesire idx %=5; //daca e 5, ia-o de la capat relayStates[idx] = 1; //fa iesirea 1 break; case code7: //down idx--; //selecteaza iesirea precedenta if(idx < 0){ //daca e negativa, iao pe cea mai mare idx=4; } relayStates[idx] = 1; //fa iesirea 1 break; case code8: relayStates[5] ^= 1; digitalWrite(relay6, relayStates[5]); break; //default : idx = -1; } for(int i = 0; i < 5; i++){ // modifica iesirea in functie de testele anterioare. if(i == idx){ digitalWrite(relayPins[i], relayStates[i]); } else { digitalWrite(relayPins[i], LOW); } } irrecv.resume(); // Receive the next value } //if (irrecv.decode(&results)) } //loop() LLLE am gasit ceva aici pt detectarea depresarii butonului, dar habar nu am cum sa adaptez la sketchul meu. pun link aici, poate cineva isi da seama ce si cum: https://forum.arduino.cc/index.php?topic=612249.0 Editat Martie 21, 2021 de gabitzu2006 update Link spre comentariu
Liviu M Postat Martie 22, 2021 Partajează Postat Martie 22, 2021 (editat) Ai mai jos un cod care s-ar putea sa detecteze tasta (ne)apasata. Inlocuieste code9 cu unul valid. Codul de pornire e unul mai vechi, unele din tastele tale nu mai merg. #include <IRremote.h> #define NR_TOTAL_IESIRI 5 #define NR_IESIRI_UP_DOWN 4 int RECV_PIN = 2; // the pin where you connect the output pin of sensor int relay1 = 4; int relay2 = 5; int relay3 = 6; int relay4 = 7; int relay9 = 9; //releu acticat cat butonul 9 e apasat int idxRel9 = 4; int relayPins[] = {relay1, relay2, relay3, relay4, relay9}; //array with all the relays' pins int relayStates[] = {0,0,0,0,0}; //the initial state of relays int i=0; //relay index for the arrays int iRepeatCounter = 0; #define code1 16753245 // code received from button no. 1 #define code2 16736925 // code received from button no. 2 #define code3 16769565 // code received from button no. 3 #define code4 16720605 // code received from button no. 4 #define code5 16718055 // cod pt up #define code6 16730805 // cod pt down #define code9 99999999 // cod noua IRrecv irrecv(RECV_PIN); decode_results results; bool bRecRepeat = false; void setup() { Serial.begin(115200); irrecv.enableIRIn(); // Start the receiver for(int i = 0; i < NR_TOTAL_IESIRI; i++){ pinMode(relayPins[i], OUTPUT); } } void loop() { static int idx = -1; //index iesire if (irrecv.decode(&results)) { unsigned int value = results.value; iRepeatCounter = millis(); switch(value) { case code1: idx = 0; //prima iesire, relayStates[idx] ^= 1; //inverseaza starea relayStates[idxRel9] = LOW; bRecRepeat = false; break; case code2: idx = 1; relayStates[idx] ^= 1; relayStates[idxRel9] = LOW; bRecRepeat = false; break; case code3: idx = 2; relayStates[idx] ^= 1; relayStates[idxRel9] = LOW; bRecRepeat = false; break; case code4: idx = 3; relayStates[idx] ^= 1; relayStates[idxRel9] = LOW; bRecRepeat = false; break; case code5: //up idx++; // selecteaza urmatoarea iesire idx %= NR_IESIRI_UP_DOWN; //daca e 4, ia-o de la capat relayStates[idx] = 1; //fa iesirea 1 relayStates[idxRel9] = LOW; bRecRepeat = false; break; case code6: //down idx--; //selecteaza iesirea precedenta if(idx < 0){ //daca e negativa, ia-o pe cea mai mare idx = NR_IESIRI_UP_DOWN - 1; } relayStates[idx] = 1; //fa iesirea 1 relayStates[idxRel9] = LOW; bRecRepeat = false; break; case code9: relayStates[idxRel9] = HIGH; break; case REPEAT : bRecRepeat = true; break; // default : idx = -1; } //switch irrecv.resume(); // Receive the next value } //if (irrecv.decode(&results)) for(int i = 0; i < NR_IESIRI_UP_DOWN; i++){ // modifica iesirea in functie de testele anterioare. if(i == idx){ digitalWrite(relayPins[i], relayStates[i]); } else { digitalWrite(relayPins[i], LOW); } } //for if(relayStates[idxRel9] && bRecRepeat){ digitalWrite(relayPins[idxRel9], HIGH); } else { digitalWrite(relayPins[idxRel9], LOW); } if((millis() - iRepeatCounter) > 120){ //mai mult de 120 ms de la ultimul cod receptionat => repeat bRecRepeat = 0; } Editat Martie 22, 2021 de Liviu M Link spre comentariu
gabitzu2006 Postat Martie 22, 2021 Autor Partajează Postat Martie 22, 2021 nu-i bai. de azi-noapte nici eu nu am mai avut timp. poate mai studiez diseara. Link spre comentariu
Liviu M Postat Martie 22, 2021 Partajează Postat Martie 22, 2021 N-am vazut ca ai postat (n-am mai dat refresh la pagina), asa c-am editat inca o data postul de mai sus. Am pus un cod care s-ar putea sa miste cate ceva. Link spre comentariu
gabitzu2006 Postat Martie 23, 2021 Autor Partajează Postat Martie 23, 2021 (editat) salutare! acum am reusit sa testez si.... 1. in prima faza, cu codul de mai sus, led-ul palpaie la intensitate f mica, cat e apasat butonul stanga si se stinge dupa ce depresez butonul. la fel face si cand apas dreapta (cred ca sesizeaza doar cand se opreste acel cod de repeat). 2. am declarat si pinul 9 ca output. Acum ledul lumineaza normal, nu mai palpaie cat e actionat butonul stanga, insa face la fel si pentru dreapta, desi, ca mai sus, nu am introdus in sketch codul pentru dreapta. Dupa cateva actionari, ledul iarasi palpaie cu intensitate redusa si nu-si mai revine pana nu dau reset. pun codul meu mai jos: #include <IRremote.h> #define NR_TOTAL_IESIRI 5 #define NR_IESIRI_UP_DOWN 4 int RECV_PIN = 2; // the pin where you connect the output pin of sensor int relay1 = 4; int relay2 = 5; int relay3 = 6; int relay4 = 7; int relay9 = 9; //releu acticat cat butonul 9 e apasat int idxRel9 = 4; int relayPins[] = {relay1, relay2, relay3, relay4, relay9}; //array with all the relays' pins int relayStates[] = {0,0,0,0,0}; //the initial state of relays int i=0; //relay index for the arrays int iRepeatCounter = 0; #define code1 16753245 // code received from button no. 1 #define code2 16736925 // code received from button no. 2 #define code3 16769565 // code received from button no. 3 #define code4 16720605 // code received from button no. 4 #define code5 16718055 // cod pt up #define code6 16730805 // cod pt down #define code9 16716015 // cod noua IRrecv irrecv(RECV_PIN); decode_results results; bool bRecRepeat = false; void setup() { Serial.begin(115200); irrecv.enableIRIn(); // Start the receiver for(int i = 0; i < NR_TOTAL_IESIRI; i++){ pinMode(relayPins[i], OUTPUT); pinMode (9, OUTPUT); } } void loop() { static int idx = -1; //index iesire if (irrecv.decode(&results)) { unsigned int value = results.value; iRepeatCounter = millis(); switch(value) { case code1: idx = 0; //prima iesire, relayStates[idx] ^= 1; //inverseaza starea relayStates[idxRel9] = LOW; bRecRepeat = false; break; case code2: idx = 1; relayStates[idx] ^= 1; relayStates[idxRel9] = LOW; bRecRepeat = false; break; case code3: idx = 2; relayStates[idx] ^= 1; relayStates[idxRel9] = LOW; bRecRepeat = false; break; case code4: idx = 3; relayStates[idx] ^= 1; relayStates[idxRel9] = LOW; bRecRepeat = false; break; case code5: //up idx++; // selecteaza urmatoarea iesire idx %= NR_IESIRI_UP_DOWN; //daca e 4, ia-o de la capat relayStates[idx] = 1; //fa iesirea 1 relayStates[idxRel9] = LOW; bRecRepeat = false; break; case code6: //down idx--; //selecteaza iesirea precedenta if(idx < 0){ //daca e negativa, ia-o pe cea mai mare idx = NR_IESIRI_UP_DOWN - 1; } relayStates[idx] = 1; //fa iesirea 1 relayStates[idxRel9] = LOW; bRecRepeat = false; break; case code9: relayStates[idxRel9] = HIGH; break; case REPEAT : bRecRepeat = true; break; // default : idx = -1; } //switch irrecv.resume(); // Receive the next value } //if (irrecv.decode(&results)) for(int i = 0; i < NR_IESIRI_UP_DOWN; i++){ // modifica iesirea in functie de testele anterioare. if(i == idx){ digitalWrite(relayPins[i], relayStates[i]); } else { digitalWrite(relayPins[i], LOW); } } //for if(relayStates[idxRel9] && bRecRepeat){ digitalWrite(relayPins[idxRel9], HIGH); } else { digitalWrite(relayPins[idxRel9], LOW); } if((millis() - iRepeatCounter) > 120){ //mai mult de 120 ms de la ultimul cod receptionat => repeat bRecRepeat = 0; } } LE: de fapt, la pct 2, ledul incepe sa faca figuri dupa ce apas tasta 1, sau 2, sau 3...daca rulez printre cele 4 leduri, cand apas stanga sau dreapta, ledul lumineaza normal. Editat Martie 23, 2021 de gabitzu2006 update Link spre comentariu
Liviu M Postat Martie 24, 2021 Partajează Postat Martie 24, 2021 Din ce povestesti, pare sa mearga aproape cum speram. Ce ma deranjeaza e ca nu se initializeaza ultimul pin cum trebuie. Restul e doar "fine tuning". Mai ai chef sa mai incerci o data? #include <IRremote.h> #define NR_TOTAL_IESIRI 5 #define NR_IESIRI_UP_DOWN 4 int RECV_PIN = 2; // the pin where you connect the output pin of sensor int relay1 = 4; int relay2 = 5; int relay3 = 6; int relay4 = 7; int relay9 = 9; //releu acticat cat butonul 9 e apasat int idxRel9 = 4; int relayPins[] = {relay1, relay2, relay3, relay4, relay9}; //array with all the relays' pins int relayStates[] = {0,0,0,0,0}; //the initial state of relays int iRepeatCounter = 0; #define code1 16753245 // code received from button no. 1 #define code2 16736925 // code received from button no. 2 #define code3 16769565 // code received from button no. 3 #define code4 16720605 // code received from button no. 4 #define code5 16718055 // cod pt up #define code6 16730805 // cod pt down #define code9 16716015 // cod noua IRrecv irrecv(RECV_PIN); decode_results results; bool bRecRepeat = false; void setup() { Serial.begin(115200); irrecv.enableIRIn(); // Start the receiver for(uint8_t i = 0; i < NR_TOTAL_IESIRI; ++i){ pinMode(relayPins[i], OUTPUT); // pinMode (9, OUTPUT); digitalWrite(relayPins[i], LOW); } delay(5); } void loop() { static int idx = -1; //index iesire if (irrecv.decode(&results)) { unsigned int value = results.value; iRepeatCounter = millis(); switch(value) { case code1: idx = 0; //prima iesire, relayStates[idx] ^= 1; //inverseaza starea bRecRepeat = false; break; case code2: idx = 1; relayStates[idx] ^= 1; bRecRepeat = false; break; case code3: idx = 2; relayStates[idx] ^= 1; bRecRepeat = false; break; case code4: idx = 3; relayStates[idx] ^= 1; bRecRepeat = false; break; case code5: //up idx++; // selecteaza urmatoarea iesire idx %= NR_IESIRI_UP_DOWN; //daca e 4, ia-o de la capat relayStates[idx] = 1; //fa iesirea 1 bRecRepeat = false; break; case code6: //down idx--; //selecteaza iesirea precedenta if(idx < 0){ //daca e negativa, ia-o pe cea mai mare idx = NR_IESIRI_UP_DOWN - 1; } relayStates[idx] = 1; //fa iesirea 1 relayStates[idxRel9] = LOW; bRecRepeat = false; break; case code9: relayStates[idxRel9] = HIGH; bRecRepeat = true; break; case REPEAT : bRecRepeat = true; break; default : bRecRepeat = false; } //switch for(int i = 0; i < NR_TOTAL_IESIRI; ++i){ // modifica iesirea in functie de testele anterioare. if(i == idx){ digitalWrite(relayPins[i], relayStates[i]); } else { digitalWrite(relayPins[i], LOW); } } //for irrecv.resume(); // Receive the next value } //if (irrecv.decode(&results)) if(relayStates[idxRel9] && bRecRepeat){ digitalWrite(relayPins[idxRel9], HIGH); } else { digitalWrite(relayPins[idxRel9], LOW); } if((millis() - iRepeatCounter) > 120){ //mai mult de 120 ms de la ultimul cod receptionat => repeat bRecRepeat = 0; } } Link spre comentariu
gabitzu2006 Postat Martie 24, 2021 Autor Partajează Postat Martie 24, 2021 am testat iar. acum...daca apas stanga sau dreapta, ledul 9 se aprinde doar cat tin apasat unul din cele 2 butoane. insa dupa ce rulez de cateva ori (4 sau 5 ori) prin celelalte leduri, iarasi doar palpaie. Link spre comentariu
Liviu M Postat Martie 24, 2021 Partajează Postat Martie 24, 2021 Adauga delay(10) chiar la sfarsit (inainte de ultima acolada }). Daca nu ajuta, nu mai stiu, ma mai gandesc. Link spre comentariu
gabitzu2006 Postat Martie 24, 2021 Autor Partajează Postat Martie 24, 2021 uitasem sa mentionez ca la sketchul de dinainte, ledul 9 se aprindea cat tineam apasat orice buton, nu doar stanga sau dreapta. la fel si acum, cu diferenta ca acum nu este aproape stins ca inainte, doar ca o data cu rularea prin celelalate 4 leduri, treptat, de la o cursa la alta, intensitea luminii ledului 9 scade iar efectul de palpaire se accentueaza. Cred ca am facut vreo 20 de curse prin cele 4 leduri, iar ledul 9 inca nu s-a stins (ma refer la intensitatea luminoasa). Estimez totusi ca se va stinge dupa mai multe rulari. Link spre comentariu
gabitzu2006 Postat Martie 24, 2021 Autor Partajează Postat Martie 24, 2021 vreau sa folosesc acest sa-i zicem proiect, pentru controlul unui amplificator de putere: am zis sa pun 5 relee pentru a comuta intre sursele de semnal, iar cele 2 leduri stanga dreapta vor fi comenzile pentru o punte H, pentru a controla un motor pentru potentiometrul de volum. asa cum e in stadiul actual, nu ma deranjeaza ca led-ul 9 isi pierde terptat din intensitate, intrucat nu voi rula ca nebunul prin sursele de semnal. Insa faptul ca se aprinde la orice apasare de buton, e o problema. Stiu ca au mai fost proiecte de telecomanda pentru amplif, cel mai cunoscut fiind proiectul lui danzup, insa fisierele s-au pierdut de-a lungul timpului. Cred ca varianta cu arduino este mai accesibila pentru mai multi electronisti, mai ales pt cei mai putini priceputi in ale programarii, ca mine. Link spre comentariu
Liviu M Postat Martie 24, 2021 Partajează Postat Martie 24, 2021 Mai incercam o data? #include <IRremote.h> #define NR_TOTAL_IESIRI 5 #define NR_IESIRI_UP_DOWN 4 int RECV_PIN = 2; // the pin where you connect the output pin of sensor int relay1 = 4; int relay2 = 5; int relay3 = 6; int relay4 = 7; int relay9 = 9; //releu acticat cat butonul 9 e apasat int idxRel9 = 4; int relayPins[] = {relay1, relay2, relay3, relay4, relay9}; //array with all the relays' pins int relayStates[] = {0,0,0,0,0}; //the initial state of relays int iRepeatCounter = 0; #define code1 16753245 // code received from button no. 1 #define code2 16736925 // code received from button no. 2 #define code3 16769565 // code received from button no. 3 #define code4 16720605 // code received from button no. 4 #define code5 16718055 // cod pt up #define code6 16730805 // cod pt down #define code9 16716015 // cod noua IRrecv irrecv(RECV_PIN); decode_results results; bool bRecRepeat = false; void setup() { Serial.begin(115200); irrecv.enableIRIn(); // Start the receiver for(uint8_t i = 0; i < NR_TOTAL_IESIRI; ++i){ pinMode(relayPins[i], OUTPUT); // pinMode (9, OUTPUT); digitalWrite(relayPins[i], LOW); } delay(5); } void loop() { static int idx = -1; //index iesire if (irrecv.decode(&results)) { unsigned int value = results.value; iRepeatCounter = millis(); switch(value) { case code1: idx = 0; //prima iesire, relayStates[idx] ^= 1; //inverseaza starea bRecRepeat = false; break; case code2: idx = 1; relayStates[idx] ^= 1; bRecRepeat = false; break; case code3: idx = 2; relayStates[idx] ^= 1; bRecRepeat = false; break; case code4: idx = 3; relayStates[idx] ^= 1; bRecRepeat = false; break; case code5: //up idx++; // selecteaza urmatoarea iesire idx %= NR_IESIRI_UP_DOWN; //daca e 4, ia-o de la capat relayStates[idx] = 1; //fa iesirea 1 bRecRepeat = false; break; case code6: //down idx--; //selecteaza iesirea precedenta if(idx < 0){ //daca e negativa, ia-o pe cea mai mare idx = NR_IESIRI_UP_DOWN - 1; } relayStates[idx] = 1; //fa iesirea 1 bRecRepeat = false; break; case code9: idx = idxRel9; relayStates[idx] = HIGH; bRecRepeat = true; break; case REPEAT : bRecRepeat = true; break; default : bRecRepeat = false; } //switch for(int i = 0; i < NR_IESIRI_UP_DOWN; ++i){ // modifica iesirea in functie de testele anterioare. if(i == idx){ digitalWrite(relayPins[i], relayStates[i]); } else { digitalWrite(relayPins[i], LOW); } } //for irrecv.resume(); // Receive the next value } //if (irrecv.decode(&results)) if(relayStates[idxRel9] && bRecRepeat){ digitalWrite(relayPins[idxRel9], HIGH); } else { digitalWrite(relayPins[idxRel9], LOW); relayStates[idxRel9] = LOW; } if((millis() - iRepeatCounter) > 120){ //mai mult de 120 ms de la ultimul cod receptionat => repeat bRecRepeat = 0; } } Link spre comentariu
gabitzu2006 Postat Martie 24, 2021 Autor Partajează Postat Martie 24, 2021 acum....la inceput merge binisor: ledul 9 se aprinde cand apas buton stanga si doar stanga. in schimb, daca aprind unul din celelalte leduri, ori apasand direct butonul coresp ledului, ori prin up/down, daca apas buton stanga, imi stinge ledul aprins anterior. dupa cateva ”sicane” din astea, se stinge si led9 si nu mai vrea sa se aprinda. Link spre comentariu
Liviu M Postat Martie 24, 2021 Partajează Postat Martie 24, 2021 Da, asa se intampla cand schimb in mai multe locuri fara teste intermediare. Incearca sa inlocuiesti case-ul pentru codul 9 din case code9: idx = idxRel9; relayStates[idx] = HIGH; bRecRepeat = true; In case code9: relayStates[idxRel9] = HIGH; bRecRepeat = true; Link spre comentariu
gabitzu2006 Postat Martie 24, 2021 Autor Partajează Postat Martie 24, 2021 oarecum la fel...adica la inceput merge cum ar trebui, insa dupa cateva rulari prin celalalte leduri, led9 se stinge (de fapt palpaie dar la intensitate f redusa, abia vizibila). Ma gandesc, poate ar trebui acest led9 tratat diferit, fara sa fie in vreo bucla cu celelalte, sau sa share-uiasca parametri cat mai putini cu celelalte. In paralel eu mai caut proiecte de control motor cu arduino si IR, dar pana acum nu am gasit ceva care sa comande motorul intr-un sens doar atat timp cat butonul corespunzator este apasat. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum