Arduino programozás segítség
Re: Arduino programozás segítség
Kezdésként tanulmányozd az alapokat:
HOW TO SET UP AN IR REMOTE AND RECEIVER ON AN ARDUINO
http://www.circuitbasics.com/arduino-ir ... -tutorial/
Ez egy bővítmény az Operában, nem tudom nálad működik e?
HU: http://translate.google.com/translate?h ... -tutorial/
Nálam szuperül fordit teljes veb oldalakat.
HOW TO SET UP AN IR REMOTE AND RECEIVER ON AN ARDUINO
http://www.circuitbasics.com/arduino-ir ... -tutorial/
Ez egy bővítmény az Operában, nem tudom nálad működik e?
HU: http://translate.google.com/translate?h ... -tutorial/
Nálam szuperül fordit teljes veb oldalakat.
Re: Arduino programozás segítség
Szia nagyon szépen köszönöm a segítséget.
Re: Arduino programozás segítség
A 60 nap után van a 15 napos ráadás tanfolyam. Abban van az IR vezérlésről szó...
http://www.tavir.hu - a gazda
Re: Arduino programozás segítség
Miben másab az if ben if mint azif után if eljárás.
Kód: Egész kijelölése
if(digitalRead(gomb[0]) == HIGH){
if(data[0] == 10){
data[0] = 11;
}else{
data[0] = 10;}
Re: Arduino programozás segítség
Kód: Egész kijelölése
if(digitalRead(gomb[0]) == HIGH){ // Ha a külső if igaz, megnyomták a gombot?
if(data[0] == 10){ //az átkapcsolás csak akkor következik be.
data[0] = 11;
}else{
data[0] = 10;}
}
Ahogy te csináltad hibás, nem olvasod be a gomb állapotát
az gomb[1] tőmben csak a gomb címe van, hogy melyik pinre kötötted:
if(gomb[1]==HIGH){ //ez mindig végrehajtódik az 1-es gombmegnyomásakor
data[1]=11;
Wire.beginTransmission(2);
Wire.write(data[1]);
Wire.endTransmission();
delay(30);}
if(gomb[1]==HIGH&&data[1]==11){ // ez megismétlődik az előző rutin után, ha a második feltétel is teljesül.
data[1]=10;
Wire.beginTransmission(2);
Wire.write(data[1]);
Wire.endTransmission();
delay(30);}
//Felesleges kétszer vizsgálni ugyanazt a feltételt, erre van az else ág.
És az egész programod kis munkával tovább fejleszthető.
Egy for cikluson belül az összes gomb lekezelhető lenne.
Most csúnya a spagetti kódod!
Re: Arduino programozás segítség
Mivel elektronikában kezdő vagyok, ezért lehet hogy hülyeséget kérdezek.
Shift regiszterből van olyan amit bemenet ként lehet használni. Még mindíg a nyomógomboknál leragadva kérdezem ezt.
Shift regiszterből van olyan amit bemenet ként lehet használni. Még mindíg a nyomógomboknál leragadva kérdezem ezt.
Re: Arduino programozás segítség
Van.Pl. SN74HC165N
Viszont, hogy a gombnyomásról tudomásod legyen folyamatosan (polling) kell olvasnod.
Akkor már inkább PCF8574 IIC bővítő. Az gombnyomáskor megszakítást is ad.
Vagy MCP23017 vagy MCP23008 vagy MCP23016.
De ha nem kell egyszerre több gombot figyelni, akkor lehet még a gombmátrix is: 8 IO láb : 4x4-es gombmátrix.
De a főprogramban az állandó gombfigyelés erőforrásigényes! (időben)
Viszont, hogy a gombnyomásról tudomásod legyen folyamatosan (polling) kell olvasnod.
Akkor már inkább PCF8574 IIC bővítő. Az gombnyomáskor megszakítást is ad.
Vagy MCP23017 vagy MCP23008 vagy MCP23016.
De ha nem kell egyszerre több gombot figyelni, akkor lehet még a gombmátrix is: 8 IO láb : 4x4-es gombmátrix.
De a főprogramban az állandó gombfigyelés erőforrásigényes! (időben)
http://www.tavir.hu - a gazda
Re: Arduino programozás segítség
Az hogy erőforrás igényes szerintem esetemben nem számít, mivel lámpákat akarok kapcsolgatni, egy gépjárművön.
Csak mégis lehet hogy megkérdezném, hogy az időbeli eltolódás mekkora lehet.
A hw ugy néz ki:
Pro mini master figyeli a gombokat
(A gombmátrixot elvetném mert nem túl strapabíró az alkalmazandó környezetben uv,hideg-meleg,por, viz ...stb)
Majd egy másik mininek az adatot átküldi, és az triacot kapcsol, amiegy nagyobb teljesítményű rellét kapcsol.
Csak azért gondolkodom hogy a gombok is valahogy buszon legyenek beolvasva, mert visszajelzést(gombállapot) is beépitésre kerülne.
Csak mégis lehet hogy megkérdezném, hogy az időbeli eltolódás mekkora lehet.
A hw ugy néz ki:
Pro mini master figyeli a gombokat
(A gombmátrixot elvetném mert nem túl strapabíró az alkalmazandó környezetben uv,hideg-meleg,por, viz ...stb)
Majd egy másik mininek az adatot átküldi, és az triacot kapcsol, amiegy nagyobb teljesítményű rellét kapcsol.
Csak azért gondolkodom hogy a gombok is valahogy buszon legyenek beolvasva, mert visszajelzést(gombállapot) is beépitésre kerülne.
Re: Arduino programozás segítség
Tisztelt Róbert! Goübmátrixot kapni a webshopban?
Lehet gogy felületes voltam de nem találtam.
Lehet gogy felületes voltam de nem találtam.
Re: Arduino programozás segítség
Kérdésem a kövi lenne.
Pro minire csak úgy lehet feltölteni az lillesztőn ketesztül ha megnyomom a minin a resetet!?
Pro minire csak úgy lehet feltölteni az lillesztőn ketesztül ha megnyomom a minin a resetet!?
Re: Arduino programozás segítség
Helló!
Kérdésem a megszakítás kezelésről szól!
Folgást mérek hall-al.
Uno-n ugye a 2,3 pin alkalmas erre a feladatra.
Azt is meg tudja csinálni hogy két jeladót figyeljen???
Ha igen akkor attachInterrupt(x,.....,RISING); után az attachInterrupt(y,.....,RISING); jön?? Jól gondolom??
Ugya nem kell deaktiválni az első interupt hívást???
Kérdésem a megszakítás kezelésről szól!
Folgást mérek hall-al.
Uno-n ugye a 2,3 pin alkalmas erre a feladatra.
Azt is meg tudja csinálni hogy két jeladót figyeljen???
Ha igen akkor attachInterrupt(x,.....,RISING); után az attachInterrupt(y,.....,RISING); jön?? Jól gondolom??
Ugya nem kell deaktiválni az első interupt hívást???
Re: Arduino programozás segítség
Nos sikerült a két szenzor megfigyelni az unoval.
De szerintem nem teljesen ok.
De szerintem nem teljesen ok.
Re: Arduino programozás segítség
Kód: Egész kijelölése
//differencial atfolyas mennyiseg meres
/*Az atfolyasmerok adatlapjan az all hogy fix 2mm duznin keresztül hajtja meg a rotort.
1215 inp/liter alacsony viszkozitasu folyadek eseten.
Ami anyit tesz: 1000ml/1215=0,82ml/ inp.*/
volatile float elorre;
volatile float vissza;
int hallA=2;
int hallB=3;
float inpl= 0.0082;
void setup(){
lcd.begin(16,2);
lcd.clear();
pinMode(hallA,INPUT);
pinMode(hallB,INPUT);
digitalWrite(hallA,HIGH);
digitalWrite(hallB,HIGH);
attachInterrupt(0,oda,RISING);
attachInterrupt(1,ide,RISING);
}
void oda(){
elorre++;}
void ide(){
vissza++;}
void loop(){
elorre= (elorre*inpl);
vissza=(vissza*inpl);
}
Re: Arduino programozás segítség
A gerince a kodnak mág hiányos. Az lcd kiirast direkt nem irtam bele.
Re: Arduino programozás segítség
Egy kevés kiegészítéssel:
Kód: Egész kijelölése
float elorre = 0.0;
float vissza = 0.0;
volatile uint16_t _elorre = 0; // számlálonak elég a pozitiv egész szám
volatile uint16_t _vissza = 0;
int hallA=2;
int hallB=3;
float inpl= 0.0082;
// itt még az LCD-t inicializálni kellene!
void setup(){
//lcd.begin(16,2);
//lcd.clear();
pinMode(hallA,INPUT);
pinMode(hallB,INPUT);
digitalWrite(hallA,HIGH);
digitalWrite(hallB,HIGH);
attachInterrupt(0,oda,RISING);
attachInterrupt(1,ide,RISING);
}
void oda(){
_elorre++;
}
void ide(){
_vissza++;
}
void loop(){
elorre = (float)(_elorre*inpl); // Igy nem irod felül a számlálokat
vissza = (float)(_vissza*inpl);
}