Uživatelský avatar
Woyta
Píšu hodně
Příspěvky: 1062
Registrován: 06.11.2013 21:28
Bydliště: Hořice

Arduino

Docela mě překvapuje, že tu na fóru, nemáme žádny topic o Arduino.
Č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
Uživatelský avatar
zax
Píšu hodně
Příspěvky: 1750
Registrován: 27.04.2010 0:00
Bydliště: Praha, Kladno

Re: Arduino

Tohle je pro mě zajímavé téma, jen tomu rozumím jak koza petrželi, tak třeba se tu něco přiučím.
Programovatelnej světelnej modul umožňující personifikaci podle osobních potřeb by byl bezva...
Uživatelský avatar
Woyta
Píšu hodně
Příspěvky: 1062
Registrován: 06.11.2013 21:28
Bydliště: Hořice

Re: Arduino

Zas tak slozity to neni.
Na zacatku definujes promene hodnoty ktere budes pouzivat.

Kód: Vybrat vše

unsigned long ch1;
unsigned long ch2;
unsigned long ch3;

int kontrola=0;
int tisk=0;

Pak definujes vstupy a výstupy, které budes pouzivat. Pokud chces ale pouzivat seriovej port pro komunikaci s PC (Serial.begin(9600); ), tak musíš vynechat piny 0 a 1. Ale pokud to nepotřebuješ, tak je můžeš využít..
Piny je možno použivat v různych konfiguracich. Většina je sice digitálních ale některé maji Analog/Digital převodníky. Nám asi bude vetšinou stačit digitální 0 či jedna ale je možnost využít třeba i PWM modulaci.

Kód: Vybrat vše

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);

}


Ve smyčce void loop() { pak už pak píšeš vlastní program.

Z programu je asi nejzajímavější část kde měřím délku pulzu dignálu z přijímače.
Proměná = pulseIn(číslo pinu, volba detekovane hrany signálu, max doba měření pulzu);

Kód: Vybrat vše

ch1 = pulseIn(11, HIGH, 25000);
ch2 = pulseIn(12, HIGH, 25000);
ch3 = pulseIn(13, HIGH, 25000);


Na mém přijímači jsem naměřil hodnoty cca 250 pro levou výchylku, 1000 pro neutrál a 1750 pro pravou výchylku.

Když vypnu přijímač či vysílač, tak mi naměřené hodnoty padnou na 0 a jelikož jsem nechtěl aby mi to dělalo neplechu, tak jsem vlastní program dal do podminky.
Mám to nastavený tak, že pokud dojde ke splnění podmínek, tak všechny výstupní piny resetuju do 0. Akorat tam mám ještě přidanou indikaci stavu střidavým blikáním zelené a červené. To je ta část se zpožděním (delay). Hodnoty jsem nastavil zhruba tak aby blikaly stejně dlouhou dobu. Kdyby někomu chyběla druhá část blikání tak ta je na začátku loop cyklu.

Kód: Vybrat vše

       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 programu
ZDE VLASTNI PROGRAM
                  } //Konec cyklu a detekce vysilacky 
Uživatelský avatar
bowl
Uživatel
Příspěvky: 470
Registrován: 27.11.2010 0:00
Bydliště: České Budějovice

Re: Arduino

Ahoj Woyto,

tak přiznám se, že jsem nad Arduinem hodně přemýšlel a dost mě to zajímá, takže děkuji za založení tématu - budu sledovat.
Zároveň podotýkám, že sám se snažím "vyrábět" světelný modul pro auto z PICAXE 08M2+, ale nepracuje úplně přesně tak, jak bych si představoval.
Lépe řečeno - funguje to docela dobře, ale mám problém s tím, že 08M2+ je dost primitivní a pomalý, takže jsem narazil na 2 základní problémy => jednak nedokážu PIC donutit, aby v rozumné míře odezvy reagoval tak, jak jsem si představoval a jednak jsem omezený malým počtem výstupních pinů.
Přešel jsem tedy na PICAXE 14M a tím jsem odstranil druhý zmiňovaný problém - nedostatek pinů, ale první problém přetrvává.
Vysvětlím:
Na 08M2+ mi jede světelný modul, který umí několikanásobným stisknutím tlačítka vysílačky postupně rozsvěcet jednotlivé světelné okruhy modelu (dlavní, mlhovky, rampu) a následně je zase zhasínám. U druhého modelu jsem si řekl, že by byly fajn brzdové a couvací světla - taky hotovo, funguje to solidně.

Chtěl jsem ale udělat "společný světelný modul, u kterého by fungovaly jak brzdovky a couvačky, tak bych i mohl postupně zapínat světelné okruhy zmíněné výše. Dostal jsem se ale přirozeně k problému s nedostatkem výstupů na 08M2+ a proto jsem přešel na 14M, kde je ale zásadní problém. 14M totiž neumí měnit taktovací frekvenci, jako 08M2+, takže je veškerá reakce na couvání a brzdění velice pomalá.
Jsem schopen paralelně spustit 2 procesy najednou (1)brzdovky+couvačky 2) světelné okruhy), ale vždy s velkým zpožděním, takže je to v praxi nepoužitelné.

A TEĎ PROČ TO VLASTNĚ VŠECHNO PÍŠU:
Umí Arduino výše popsanou funkci? Jak by byl na výše popsané schopný reagovat?

Viděl jsem na YT video osvětlení kompletního modelu, kde například couvá, svítí a ještě k tomu bliká směrovkami, takže teoreticky by to mohlo fungovat dobře už kvůli tomu, že je vnitřní frekvence 16 MHz, jestli se nepletu...
Uživatelský avatar
Woyta
Píšu hodně
Příspěvky: 1062
Registrován: 06.11.2013 21:28
Bydliště: Hořice

Re: Arduino

Zas tolik ještě neumím ale myslím že bych to v rámci smyčky dal.

Pokud nebudu používat pro blikání funkci delay ale použiju ve funkci nějakou hodnotu kterou každou smyčku povýšim o 1 než dosahnu požadované hodnoty a pak ji vyresetuji.
Celý cyklus mi tak bude běhat rychle a nebude se nikde čekat.
Uživatelský avatar
Mira
Veterán fóra
Příspěvky: 4442
Registrován: 20.05.2013 15:31
Bydliště: Rudolfov

Re: Arduino

Michale,
Presne na tohle arduino pouzivam v rangeem. Couvacky, brzdovky si delaj svoje podle packy plynu (okamzita reakce), v programu se mysli i na razeni, pri jizde dopredu zustava zarazeno D, pri stani po par vterinach zaradi P, kdykoliv se couva tak R. Tri polohy serva, neovlada se nic, nepodarilo se mi zatim dokonce ani zacyklit, vsechny prechody rezimu to spolehlive strida podle pozice packy. Blinkry extra tlacitko a svetla jednim knoflikem projizdim postupne (obrys, tlum, dalk, zhas, atd).
Napisu Honzikovi co mi to delal, at navali ten program, cast na svetla jiste rad vyuzijes
Uživatelský avatar
bowl
Uživatel
Příspěvky: 470
Registrován: 27.11.2010 0:00
Bydliště: České Budějovice

Re: Arduino

Jo, Míro, prosím zkus sehnat.

Já jsem sice zatím ve fázi přemýšlení a čekání na světelný modul z Číny, ale kdyby to bylo mnou vyrobené, měl bych z toho větší radost! :OK: :-D
Uživatelský avatar
Mira
Veterán fóra
Příspěvky: 4442
Registrován: 20.05.2013 15:31
Bydliště: Rudolfov

Re: Arduino

... Hlavne s tim si vyhrajes, ja uz jsem Honzikovi rikal, cekam, az to posle. Je nejakej zaneprazdnenej zivotem mladeho vyvojare elektromotoru v Praze.
Uživatelský avatar
bowl
Uživatel
Příspěvky: 470
Registrován: 27.11.2010 0:00
Bydliště: České Budějovice

Re: Arduino

Míro super, díky.

Woyto, jak pokračuješ? ;-)

Já se zatím potýkám s nedostatkem základních informací.
Třeba mi není jasné, jaké je napájecí napětí, jaké jsou na výstupech (spínaných pinech) napětí a jaké jsou proudy atp.

Nemáš nějaký šikovný informační odkaz?
Uživatelský avatar
Woyta
Píšu hodně
Příspěvky: 1062
Registrován: 06.11.2013 21:28
Bydliště: Hořice

Re: Arduino

No me ted dorazili z ciny 5v regulatory LF50CV kterym to napajim. Takze to mam cele pospajene dohromady a uz zbyva jen vytisknout nejakou tu krabicku.
Az bude cas tak udelam video.

Arduino bezi na 5v a stejne napeti by melo byt i na vystupech. Samozrejme pro vetsi odbery je treba je posilit treba tranzistorem.
Stahni si dtatsheet ke konkretni desce arduino.


Kod na blinkry, brzdy a zpatecky tak nejak uz v hlave mam az bude cas tak to sepisu.
Uživatelský avatar
bowl
Uživatel
Příspěvky: 470
Registrován: 27.11.2010 0:00
Bydliště: České Budějovice

Re: Arduino

:tleskam: :hura:
Super, díky za odpověď!

Těším se na video a děkuji za tip - datasheet mě nenapadl ;-)
Uživatelský avatar
Woyta
Píšu hodně
Příspěvky: 1062
Registrován: 06.11.2013 21:28
Bydliště: Hořice

Re: Arduino

Blinkr bych asi s mejma znalostma delal timhle praso stylem. (Pisu to v editoru, muzou tam byt i chyby).
Brzdu bych asi resil podobne. Taky pomoci dvou promenych reagujicich na urcite stavy.

Kód: Vybrat vše

 if (ch1>1250 && ch1<1650)  //ch1 blinkr
                                  {
                                   digitalWrite(4, LOW);
                                   digitalWrite(5, LOW);
                                   blik=0;
                                   neblik=0;
                                  }
                                  else
                                  if (blik<1000)
                                        blik=blik+1;
                                        {
                                        if (ch1>1650)
                                              {
                                              digitalWrite(4, LOW);
                                              digitalWrite(5, HIGH);
                                              }
                                              else
                                              {
                                              digitalWrite(4, HIGH);
                                              digitalWrite(5, LOW);             
                                              }
                                        }
                                        else
                                        {
                                        neblik=neblik+1;
                                        if (neblik>1000)
                                              {
                                              blik=0;
                                              neblik=0;
                                              }
                                       }
                                 }
//konec ch1 blinkr
Uživatelský avatar
Mira
Veterán fóra
Příspěvky: 4442
Registrován: 20.05.2013 15:31
Bydliště: Rudolfov

Re: Arduino

Mam to slibeny po sobote az se Honzik vrati z ciziny, funguje to spolehlive, potrebne z toho urcite vykoukate
Uživatelský avatar
Mira
Veterán fóra
Příspěvky: 4442
Registrován: 20.05.2013 15:31
Bydliště: Rudolfov

Re: Arduino

#include <Servo.h>

const int ch6 = 0;
const int ch7 = 1;
const int ch2 = 2;
const int ch3 = 3;
const int ch4 = 4;
const int volume = 5;
const int brzda = 10;
const int sterace = 7;
const int razeni = 8;
const int navijak = 9;
const int svetla = 6;
const int ch5 = 11;
//const int = 12;
const int led = 13;
const int blinkry = A0;
const int radio = A1;
const int next = A2;
const int prev = A3;
const int couvaci = A4;
//const int rampa = A5;
const int obrys = A5;
const int strop = 12;

const int steraceCyklus = 250;
const int steraceStart = 1000;
const int steraceEnd = 2000;

int stred = 1375, ch2_delka, ch3_delka, ch4_delka, ch5_delka, ch6_delka, ch7_delka, ch2_dp, ch2_prev;
int svetlaMode = 0, hlasitost = 0, stirani = 0, stropMode = 0, brzdaMode = 0, razeniMode = 0;
boolean blinkryMode = LOW, brzdaVyp;
long steraceLastTime = 0;

Servo razeniServo;
Servo navijakServo;
Servo steraceServo;

unsigned long casRazeni;
boolean rucka;



void setup() {
pinMode(ch6, INPUT);
pinMode(ch7, INPUT);
pinMode(ch2, INPUT);
pinMode(ch3, INPUT);
pinMode(ch4 , INPUT);
pinMode(volume, OUTPUT);
pinMode(brzda, OUTPUT);
pinMode(sterace, OUTPUT);
pinMode(razeni, OUTPUT);
pinMode(navijak, OUTPUT);
pinMode(svetla, OUTPUT);
pinMode(ch5, INPUT);
pinMode(led, OUTPUT);
pinMode(blinkry, OUTPUT);
pinMode(radio, OUTPUT);
pinMode(next, INPUT);
pinMode(prev, INPUT);
pinMode(couvaci, OUTPUT);
//pinMode(rampa, OUTPUT);
pinMode(obrys, OUTPUT);
pinMode(strop, OUTPUT);
razeniServo.attach(razeni);
steraceServo.attach(sterace);
steraceServo.writeMicroseconds(steraceStart);
// while(!pulseIn(ch2,HIGH,20000))
// digitalWrite(led,!digitalRead(led));

//Serial.begin(9600);

}


void loop() {


loadInputValues();

getModes();

setOutputs();


// Serial.println(ch2_dp);
// Serial.println(ch3_delka);
// Serial.println(pulseIn(ch3,1));

}

void blik(int pin){
digitalWrite(pin, HIGH);
delay(1000);
delay(1000);
digitalWrite(pin, LOW);
delay(1000);
delay(1000);


}






void loadInputValues() {
ch2_prev = ch2_dp;
ch2_delka = pulseIn(ch2, HIGH, 20000) - stred;
ch2_dp = ch2_delka*0.85 + ch2_dp*0.15;
ch3_delka = pulseIn(ch3, HIGH, 20000) - stred;
ch4_delka = pulseIn(ch4, HIGH, 20000) - stred;
ch5_delka = pulseIn(ch5, HIGH, 20000) - stred;
// ch6_delka = pulseIn(ch6, HIGH, 20000) - stred;
//ch7_delka = pulseIn(ch7, HIGH, 20000) - stred;
}

/*void delayTrue(unsigned long time){
unsigned long actTime = millis();
time*=64;
while(actTime+time>millis());
}

void delayMicrosecondsTrue(unsigned long time){
unsigned long actTime = micros();
time*=64;
while(actTime+time>micros());
}*/






void setOutputs() {
switch (svetlaMode) {
case 1:
digitalWrite(svetla, LOW);
digitalWrite(obrys, HIGH);
// digitalWrite(rampa, LOW);
break;
case 2:
analogWrite(svetla, 75);
digitalWrite(obrys, HIGH);
// digitalWrite(rampa, LOW);
break;
case 3:
digitalWrite(svetla, HIGH);
digitalWrite(obrys, HIGH);
// digitalWrite(rampa, LOW);
break;
/* case 4:
analogWrite(svetla, 255);
digitalWrite(obrys, HIGH);
// digitalWrite(rampa, HIGH);
break;*/
default:
digitalWrite(svetla, 0);
digitalWrite(obrys, LOW);
//digitalWrite(rampa, LOW);
digitalWrite(brzda, LOW);
digitalWrite(couvaci, LOW);
break;
}

if (svetlaMode != 0) {
if(brzdaVyp==0){
if(brzdaMode==-2){
digitalWrite(brzda, LOW);
digitalWrite(couvaci, HIGH);
}
if(brzdaMode==-1){
digitalWrite(brzda, HIGH);
digitalWrite(couvaci, LOW);
}
if(brzdaMode==0){
digitalWrite(brzda, LOW);
digitalWrite(couvaci, LOW);
}
if(brzdaMode==1){
digitalWrite(brzda, LOW);
digitalWrite(couvaci, LOW);
}
}
else{
digitalWrite(brzda, LOW);
digitalWrite(couvaci, LOW);
}




}


// hlasitost = ch6_delka>0?1:0; //map(constrain(ch7_delka + 500, 0, 1000), 0, 1000, 255, 0);
//if (1/*hlasitost > 0*/) {
// digitalWrite(radio, hlasitost);
// }
// digitalWrite(led, hlasitost);
/*else {
digitalWrite(radio, LOW);
}*/
//digitalWrite(volume, 0);

if (blinkryMode == 1) {
if ((millis() % 1200) < 600) {
digitalWrite(blinkry, HIGH);
}
else {
digitalWrite(blinkry, LOW);
}
}
else {
digitalWrite(blinkry, LOW);
}





switch (razeniMode) {
case 0: //P
razeniServo.writeMicroseconds(1300);
break;
case 1: //D
razeniServo.writeMicroseconds(1420);
break;
case 2: //R
razeniServo.writeMicroseconds(1500);
break;
}



if ((ch3_delka > -200 && ch3_delka < 200) || (ch3_delka==-(stred))) {
if(navijakServo.attached())
navijakServo.detach();
}
else if (ch3_delka < -200) {
if(navijakServo.attached()==0)
navijakServo.attach(navijak);
navijakServo.writeMicroseconds(900);
// Serial.println("odvijim..");
}
else if (ch3_delka > 200) {
if(navijakServo.attached()==0)
navijakServo.attach(navijak);
navijakServo.writeMicroseconds(2200);
// Serial.println("navijim..");
}

if (stirani > 0) {
if (stirani % 2) {
steraceServo.writeMicroseconds(steraceStart);
}
else {
steraceServo.writeMicroseconds(steraceEnd);
}
if ((millis() - steraceLastTime) > steraceCyklus) {
stirani--;
steraceLastTime = millis();
}
}

}









void getModes() {
//digitalWrite(led,rucka);

if(ch2_dp<50&&ch2_dp>-50){
if(rucka==0){
casRazeni=millis();
rucka=1;
}
if((millis()-casRazeni)>5000){
razeniMode=0;
}
}
else {
rucka=0;
}
if (ch2_dp > 50) {
razeniMode=1;
}
if (ch2_dp > 0) {
brzdaMode=1;
}
if(ch2_dp>-50){
brzdaVyp=1;
}
else {
brzdaVyp=0;
}
if (ch2_dp < -50 && brzdaMode >= 0) {
brzdaMode=-1;
}
if (ch2_dp > -50 && brzdaMode==-1) {
brzdaMode=-2;
}
if(brzdaMode==-2){
if(brzdaVyp==0)
razeniMode=2;
}



if (ch4_delka > 300) {
svetlaMode++;
if(svetlaMode>3)
svetlaMode=0;
while (pulseIn(ch4, HIGH, 20000) > stred+300);
}
if (ch4_delka < - 300) {
blinkryMode = !blinkryMode;
while ((pulseIn(ch4, HIGH, 20000) < stred - 300));
}


/* if (ch5_delka > 300) {
stirani = 6;
while (pulseIn(ch5, HIGH, 20000) > stred +300);
}*/
if (ch5_delka > 300) {
stropMode = !stropMode;
digitalWrite(strop,stropMode);
while ((pulseIn(ch5, HIGH, 20000) > stred + 300));
}





/* if (ch7_delka > stred + 300) {
pinMode(next, OUTPUT);
digitalWrite(next, LOW);
delay(50);
pinMode(next, INPUT);
while (pulseIn(ch7, HIGH, 20000) > stred + 300);
}
if (ch7_delka < (stred - 300)) {
pinMode(prev, OUTPUT);
digitalWrite(prev, LOW);
delay(50);
pinMode(prev, INPUT);
while ((pulseIn(ch7, HIGH, 20000) < stred - 300));
}*/

}


int PulseIn(int pin){
int time=micros();
while(!digitalRead(pin)){
/* if(((micros()-time)>200000))
return 0;*/
}
time=micros();
while(digitalRead(pin)&&((micros()-time)>20000));
return(micros()-time);

}
Uživatelský avatar
Woyta
Píšu hodně
Příspěvky: 1062
Registrován: 06.11.2013 21:28
Bydliště: Hořice

Re: Arduino

Koukam, ze to taky nakrmil funkcema.
Navijak, prehravac, svetla, razeni.

U par prikazu se budu muset kouknout do prirucky ale jinak princip vypada podobne jako u me.


Vytisknul jsem krabicku a strcil do ni moje zapojeni.
1w strereo zesilovac, starej 2usd mp3 prehravac, klon arduino nano, repro ze stareho notebooku a 5v regulator napeti.
Jeste by to chtelo neak poladit aby prehravac po zapnuti hned nezacal hrat ale je to jeho vlastnost.
Celkovy odber je 0,2A takze okolo 1w. Zesilovac nebezi naplno. Repro uz to nedavaji. Nicmene rvat to umi pekne.
https://youtu.be/kG2Juhgivbw

Zpět na „RC vybavení, elektronika, baterie“