Ребят до этого код работал на кнопке т.е. нажал один раз включался первый режим нажал второй раз второй и т.д., но теперь когда подключил пульт шим сигнал почему-то пропал .Подскажите почему? Arduino nano 3 digital port. #include "IRremote.h" IRrecv irrecv(4); decode_results results; int t=0,i,j=0,x=0; void setup() { Serial.begin(9600); irrecv.enableIRIn(); digitalWrite(3,OUTPUT); } int prov(){ if ( irrecv.decode( &results )) { switch(results.value){ case 0xFF6897: t=0; break; case 0xFF30CF: t=1; break; case 0xFF18E7: t=2; break; case 0xFF7A85: t=3; break; case 0xFF10EF: t=4; break; case 0xFF38C7: t=5; break; case 0xFF5AA5: t=6; break; } irrecv.resume(); } return t; } void loop() { int t = prov(); if(t==0){ digitalWrite(3,0); Serial.println(t); delay(25); } if(t==1){ for(i=0;i<=255;i++){ int t = prov(); Serial.println(t); if(t!=1){ break; } analogWrite(3,i); if(i==255){ for(i=255;i>=0;i--){ int t = prov(); Serial.println(t); if(t!=1){ break; } analogWrite(3,i); } } } } if(t==2){ for(i=0;i<=255;i++){ int t = prov(); Serial.println(t); if(t!=2){ break; } analogWrite(3,i); delay(10); analogWrite(3,0); delay(10); if(i==255){ for(i=255;i>=0;i--){ int t = prov(); Serial.println(t); if(t!=2){ break; } analogWrite(3,i); delay(10); analogWrite(3,0); delay(10); } } } } if(t==3){ int t = prov(); Serial.println(t); digitalWrite(3,1); delay(15); digitalWrite(3,0); delay(15); } if(t==4){ int t = prov(); Serial.println(t); analogWrite(3,100); } if(t==5){ int t = prov(); Serial.println(t); analogWrite(3,170); } if(t==6){ int t = prov(); Serial.println(t); analogWrite(3,255); } }
Код (C++): #include "IRremote.h" IRrecv irrecv(4); decode_results results; int t=0,i,j=0; void setup() { Serial.begin(9600); irrecv.enableIRIn(); digitalWrite(3,OUTPUT); j=5; } int prov(){ if ( irrecv.decode( &results )) { // если данные пришли switch(results.value){ case 0xFF6897: t=0; break; case 0xFF30CF: t=1; break; case 0xFF18E7: t=2; break; case 0xFF7A85: t=3; break; case 0xFF10EF: t=4; break; case 0xFF38C7: t=5; break; case 0xFF5AA5: t=6; break; } irrecv.resume();// принимаем следующую команду } return t; } void loop() { int t = prov(); if(t==0){ digitalWrite(j,0); Serial.println(t); delay(25); } if(t==1){ for(i=0;i<=255;i++){ int t = prov(); Serial.println(t); if(t!=1){ break; } analogWrite(j,i); if(i==255){ for(i=255;i>=0;i--){ int t = prov(); Serial.println(t); if(t!=1){ break; } analogWrite(j,i); } } } } if(t==2){ for(i=0;i<=255;i++){ int t = prov(); Serial.println(t); if(t!=2){ break; } analogWrite(j,i); delay(10); analogWrite(j,0); delay(10); if(i==255){ for(i=255;i>=0;i--){ int t = prov(); Serial.println(t); if(t!=2){ break; } analogWrite(j,i); delay(10); analogWrite(j,0); delay(10); } } } } if(t==3){ int t = prov(); Serial.println(t); digitalWrite(j,1); delay(15); digitalWrite(j,0); delay(15); } if(t==4){ int t = prov(); Serial.println(t); analogWrite(j,100); } if(t==5){ int t = prov(); Serial.println(t); analogWrite(j,170); } if(t==6){ int t = prov(); Serial.println(t); analogWrite(j,255); } }
Практически все библиотеки для ИК приемника и передатчика используют второй аппаратный таймер и изза этого НЕЛЬЗЯ подключать ИК передатчик или приемник к 3 или 11 порту!!!
бред уже хотя бы потому. что "передатчик и приемник" используют разные механизмы работы. в процитированном описании написано. что на 3 и 11 порту не будет работать ШИМ. С работой передатчика и приемника это не связано никак - ШИМ для ИК не нужен
Потверждаю! Вверху жирным показано для тех кто не заметил, где повторяются инты P.S. Упс... В виде кода не получилось....