Arduino programozás segítség

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Arduino programozás segítség

Hozzászólás Szerző: kapu48 »

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.
vegso79
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2018. december 11. kedd, 17:49

Re: Arduino programozás segítség

Hozzászólás Szerző: vegso79 »

Szia nagyon szépen köszönöm a segítséget.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino programozás segítség

Hozzászólás Szerző: Robert »

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 :)
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

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;}
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Arduino programozás segítség

Hozzászólás Szerző: kapu48 »

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.

Ráadásul az én változatom tömörebb is.
É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!
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

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.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino programozás segítség

Hozzászólás Szerző: Robert »

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)
http://www.tavir.hu - a gazda :)
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

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.
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

Tisztelt Róbert! Goübmátrixot kapni a webshopban?
Lehet gogy felületes voltam de nem találtam.
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

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!?
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

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???
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

Nos sikerült a két szenzor megfigyelni az unoval.
De szerintem nem teljesen ok.
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

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


 


Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

A gerince a kodnak mág hiányos. Az lcd kiirast direkt nem irtam bele.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Arduino programozás segítség

Hozzászólás Szerző: kapu48 »

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

}

Válasz küldése