Č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