Právě je úte říj 16, 2018 9:59 pm

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 17 ]  Přejít na stránku 1, 2  Další
Autor Zpráva
 Předmět příspěvku: Arduino
PříspěvekNapsal: čtv pro 21, 2017 1:00 am 
Offline
Častý přispěvatel
Uživatelský avatar

Registrován: stř lis 06, 2013 9:28 pm
Příspěvky: 948
Bydliště: Hořice
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:
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


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino
PříspěvekNapsal: čtv pro 21, 2017 8:16 am 
Offline
Píšu strašně moc!
Uživatelský avatar

Registrován: pon dub 26, 2010 11:00 pm
Příspěvky: 2047
Bydliště: Praha, Kladno
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...

_________________
2,4 Ghz
http://zaxcz.rajce.idnes.cz/
http://modelmarket.cz/detail/?product=6 ... 600&list=1


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino
PříspěvekNapsal: čtv pro 21, 2017 4:19 pm 
Offline
Častý přispěvatel
Uživatelský avatar

Registrován: stř lis 06, 2013 9:28 pm
Příspěvky: 948
Bydliště: Hořice
Zas tak slozity to neni.
Na zacatku definujes promene hodnoty ktere budes pouzivat.
Kód:
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:
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:
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:
       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 


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino
PříspěvekNapsal: pát led 12, 2018 9:03 am 
Offline
Uživatel
Uživatelský avatar

Registrován: sob lis 27, 2010 12:00 am
Příspěvky: 494
Bydliště: České Budějovice
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...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino
PříspěvekNapsal: pát led 12, 2018 11:11 am 
Offline
Častý přispěvatel
Uživatelský avatar

Registrován: stř lis 06, 2013 9:28 pm
Příspěvky: 948
Bydliště: Hořice
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.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino
PříspěvekNapsal: pát led 12, 2018 1:37 pm 
Offline
RUR-5
Uživatelský avatar

Registrován: pon kvě 20, 2013 2:31 pm
Příspěvky: 3949
Bydliště: Rudolfov
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

_________________
http://expeditionrc.rajce.idnes.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino
PříspěvekNapsal: úte led 23, 2018 10:49 am 
Offline
Uživatel
Uživatelský avatar

Registrován: sob lis 27, 2010 12:00 am
Příspěvky: 494
Bydliště: České Budějovice
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


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino
PříspěvekNapsal: úte led 23, 2018 11:57 am 
Offline
RUR-5
Uživatelský avatar

Registrován: pon kvě 20, 2013 2:31 pm
Příspěvky: 3949
Bydliště: Rudolfov
... Hlavne s tim si vyhrajes, ja uz jsem Honzikovi rikal, cekam, az to posle. Je nejakej zaneprazdnenej zivotem mladeho vyvojare elektromotoru v Praze.

_________________
http://expeditionrc.rajce.idnes.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino
PříspěvekNapsal: stř led 24, 2018 10:17 am 
Offline
Uživatel
Uživatelský avatar

Registrován: sob lis 27, 2010 12:00 am
Příspěvky: 494
Bydliště: České Budějovice
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?


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino
PříspěvekNapsal: stř led 24, 2018 6:40 pm 
Offline
Častý přispěvatel
Uživatelský avatar

Registrován: stř lis 06, 2013 9:28 pm
Příspěvky: 948
Bydliště: Hořice
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.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino
PříspěvekNapsal: stř led 24, 2018 8:41 pm 
Offline
Uživatel
Uživatelský avatar

Registrován: sob lis 27, 2010 12:00 am
Příspěvky: 494
Bydliště: České Budějovice
:tleskam: :hura:
Super, díky za odpověď!

Těším se na video a děkuji za tip - datasheet mě nenapadl ;-)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino
PříspěvekNapsal: stř led 24, 2018 10:45 pm 
Offline
Častý přispěvatel
Uživatelský avatar

Registrován: stř lis 06, 2013 9:28 pm
Příspěvky: 948
Bydliště: Hořice
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:
 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


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino
PříspěvekNapsal: čtv led 25, 2018 1:17 am 
Offline
RUR-5
Uživatelský avatar

Registrován: pon kvě 20, 2013 2:31 pm
Příspěvky: 3949
Bydliště: Rudolfov
Mam to slibeny po sobote az se Honzik vrati z ciziny, funguje to spolehlive, potrebne z toho urcite vykoukate

_________________
http://expeditionrc.rajce.idnes.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino
PříspěvekNapsal: ned úno 04, 2018 11:17 am 
Offline
RUR-5
Uživatelský avatar

Registrován: pon kvě 20, 2013 2:31 pm
Příspěvky: 3949
Bydliště: Rudolfov
#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);

}

_________________
http://expeditionrc.rajce.idnes.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino
PříspěvekNapsal: úte úno 13, 2018 12:03 am 
Offline
Častý přispěvatel
Uživatelský avatar

Registrován: stř lis 06, 2013 9:28 pm
Příspěvky: 948
Bydliště: Hořice
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


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 17 ]  Přejít na stránku 1, 2  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 2 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  

Copyright © 2012 Modelářské fórum RC4x4.cz - Forum pro všechny příznivce pomalé jízdy terénem.
Jedeme na phpBB. Máme rádi expediční rc modely a vlastně vše, co má alespoň čtyři kola.