Čekal bych, že si lidi na těhle mikroprocesorech budou dělat třeba světelné moduly a další věci.
Takže co je třeba?
1) Určitě nějaké to Arduino. Doporučuji na vývoj programu koupit třeba na ebayi ci aliexpresu kit Arduino Uno s nepájivým polem a sadou elektronických součástek. Cca 400kč.
2) PC či notebook na kterém budeme programovat.
3) Základní znalosti elektroniky. A nějaké to vybavení.
4) Arduino Nano které je malé a vhodné pro zástavbu ale má všechny porty jako velké Arduino Uno. cca 40kč
Jde se obejít bez Arduino Uno kitu a programovat přímo na Nano ale na vývojovém kitu jde vyzkoušet spousta věcí něž se doladí finální zapojení.
Programováni je poměrně snadné a na spoustu věcí jde na internetu najít už hotový příklad. Stejně tak jako hodně příruček pro začátečníky.
Jedna třeba zde: http://www.hobbyrobot.cz/wp-content/upl ... matora.pdf
Sám s arduinem začínam. Takže zatím mám udělán program pro ovládání MP3 přehrávače umístěného v modelu.
Vstup jsou 3 kanály přijímače. Výstupy Arduina ovládám přes optočleny tlačítka play/pause, next, prev, vol+, vol-. Dále využívám dva výstupy pro dvě diody indikující stav.
Co se týče SW, tak pro diagnostické účely tak mám v programu povolen seriový port a posílám přes něj na PC nasnímané hodnoty z přijímače na vstupech arduina.
Přidal jsem i smyčku která kontroluje nejsou všechny kanály v krajní poloze, což pro mě znamená nezapnutou vysílačku a bez ošetřeni téhle situace bych měl na přehrávači pernamentně sepnutá tlačitka.
Program a zapojení mám odzkoušené na nepájivém poli. Teď přes vánoce to budu nahrávat do Nano a dělat konečné zapojení.
Kód: Vybrat vše
unsigned long ch1;
unsigned long ch2;
unsigned long ch3;
int kontrola=0;
int tisk=0;
void setup() {
  // put your setup code here, to run once:
pinMode(11, INPUT); //kanal 1
pinMode(12, INPUT); //kanal 2
pinMode(13, INPUT); //kanal 3
pinMode(2, OUTPUT); //zelena led
pinMode(3, OUTPUT); //cervwna led
pinMode(4, OUTPUT); //hlasitost +
pinMode(5, OUTPUT); //hlasitost -
pinMode(6, OUTPUT); //predchozi v poradi
pinMode(7, OUTPUT); //dalsi v poradi
pinMode(8, OUTPUT); //play/pause
pinMode(9, OUTPUT); //testovaci
Serial.begin(9600); 
}
void loop() {
  // put your main code here, to run repeatedly:
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
delay(50);
ch1 = pulseIn(11, HIGH, 25000);
ch2 = pulseIn(12, HIGH, 25000);
ch3 = pulseIn(13, HIGH, 25000);
 if (tisk>10) //Vypis hodnot kanalu na PC 1x za 20 cyklu
       {
        Serial.print("Channel 1:"); 
        Serial.println(ch1);
        Serial.print("Channel 2:"); 
        Serial.println(ch2);
        Serial.print("Channel 3:"); 
        Serial.println(ch3);
        tisk=0;
       }
       else
       {
       tisk=tisk+1;
       } //konec vypisu hodnot
       if (ch1<10 && ch2<10 && ch3<10)   //detekce vypnute vysilacky
                {
                digitalWrite(4, LOW);
                digitalWrite(5, LOW);
                digitalWrite(6, LOW);
                digitalWrite(7, LOW);
                digitalWrite(8, LOW);
                 
                 delay(150); 
                 digitalWrite(2, LOW);
                 digitalWrite(3, HIGH);
                 delay(200);              
                 }
                 else
                 {  //Zacatek cyklu 
                          if (ch1>1250 && ch1<1650)  //ch1 hlasitost +/-
                                  {
                                   digitalWrite(4, LOW);
                                   digitalWrite(5, LOW);
                                  }
                                  else
                                  {
                                  if (ch1>1650)
                                        {
                                        digitalWrite(4, LOW);
                                        digitalWrite(5, HIGH);
                                        }
                                        else
                                        {
                                        digitalWrite(4, HIGH);
                                        digitalWrite(5, LOW);              
                                        }
                                  }  //konec ch1 hlasitost +/-
  
                            if (ch2>1250 && ch2<1650)  //ch2 predchozi/dalsi
                                      {
                                      digitalWrite(6, LOW);
                                      digitalWrite(7, LOW);
                                      }
                                      else
                                      {
                                      if (ch2>1650)
                                                {
                                                digitalWrite(6, LOW);
                                                digitalWrite(7, HIGH);
                                                }
                                                else
                                                {
                                                digitalWrite(6, HIGH);
                                                digitalWrite(7, LOW);              
                                                }
                                      }  //konec ch2 predchozi/dalsi
      
                              if (ch3>1650)   //tlacitko play/pause
                                      {
                                      digitalWrite(8, HIGH);
                                      //delay(100);         
                                      //digitalWrite(8, LOW); 
                                      }
                                      else
                                      {
                                      digitalWrite(8, LOW);            
                                      } //konec tlacitko play/pause
                      
                      
            
                  } //Konec cyklu a detekce vysilacky  
              
              
}   //konec programu
