Irremote codes uitlezen
3 berichten
• Pagina 1 van 1
- Chrisstoffel
- Berichten: 1
- Geregistreerd: 31 Mrt 2015, 13:14
Irremote codes uitlezen
Ik ben een leek op het gebied van Arduino codering. De bedoeling is om een servo aan te sturen via remote. Er zijn veel voorbeelden te vinden om de codes uit te lezen maar geen enkele, die ik gevonden heb, "leest" de knoppen goed uit. Bv het cijfer 1 geeft telken male een andere code. Ik weet dat dit een summiere beschrijving is.
Heeft iemand een briljant idee?
Heeft iemand een briljant idee?
Advertisement
Re: Irremote codes uitlezen
Zeker niet briljant, hoor. Maar ik 'scan' altijd de knoppen en andere input acties.
Stel je hebt een 5 knoppen of andere logische signalen, van een sensor of zo, die sluit ik aan op de pins A0~A5
Zet deze pins/ports als input (staan ze al in default)
Zet die 5 ports(pinnen A0~A5) high om de internal pullups er op te zetten (kan in 1 regel PORTC |=(31<<0);
Sluit daar die ingangen op aan low active dus als je ze verbind met de GND dan is de schakelaar of sensor aan.
Vervolgens maak je in de loop een timertje van bv. 20ms. (if(millis()-verstrekentijd>20) dan ....dit kan ook met een timerinterrupt, maar dat vind ik zelf altijd teveel gedoe...
Dus 1x per 20ms. Lees je de pinnen. (in 1 regel: byte stand_van_de_inputs=PINC;)
//Die 20ms merk je niet maar filtert wel perfect het bouncen van de schakelaars en sensors eruit.
Uitkomst daarvan vergelijken met de uitkomst van de voorgaande meting.
Bv.: Byte veranderingen=LaatsteMeting ^stand_van_de_inputs;
Dan ff per knop kijken:
for (byte knop=0;knop<5;knop ++){
if(veranderingen & (1<<knop){ //is knop veranderd?
if(stand_van_de_inputs & (1<<knop){ //knop is losgelaten....(low actief!)
Actieuit(knop);
}else{ //Knop is ingedrukt
Actieaan(knop);
}
}
}
LaatsteMeting=stand_van_de_inputs; //dat moet ook nog...
De verandering dus knop ingedrukt, of knop losgelaten... moet dan een void (functie, Actieaan en Actieuit ) voor komen voor het verwerken naar je gewenste actie, de servo omzetten???
Voordeel van deze methode is dat het een relatieve kleine footprint heeft, dus heb je nog lekker veel 'arduino-power' over voor de rest van het project...
Succes Rob.
Stel je hebt een 5 knoppen of andere logische signalen, van een sensor of zo, die sluit ik aan op de pins A0~A5
Zet deze pins/ports als input (staan ze al in default)
Zet die 5 ports(pinnen A0~A5) high om de internal pullups er op te zetten (kan in 1 regel PORTC |=(31<<0);
Sluit daar die ingangen op aan low active dus als je ze verbind met de GND dan is de schakelaar of sensor aan.
Vervolgens maak je in de loop een timertje van bv. 20ms. (if(millis()-verstrekentijd>20) dan ....dit kan ook met een timerinterrupt, maar dat vind ik zelf altijd teveel gedoe...
Dus 1x per 20ms. Lees je de pinnen. (in 1 regel: byte stand_van_de_inputs=PINC;)
//Die 20ms merk je niet maar filtert wel perfect het bouncen van de schakelaars en sensors eruit.
Uitkomst daarvan vergelijken met de uitkomst van de voorgaande meting.
Bv.: Byte veranderingen=LaatsteMeting ^stand_van_de_inputs;
Dan ff per knop kijken:
for (byte knop=0;knop<5;knop ++){
if(veranderingen & (1<<knop){ //is knop veranderd?
if(stand_van_de_inputs & (1<<knop){ //knop is losgelaten....(low actief!)
Actieuit(knop);
}else{ //Knop is ingedrukt
Actieaan(knop);
}
}
}
LaatsteMeting=stand_van_de_inputs; //dat moet ook nog...
De verandering dus knop ingedrukt, of knop losgelaten... moet dan een void (functie, Actieaan en Actieuit ) voor komen voor het verwerken naar je gewenste actie, de servo omzetten???
Voordeel van deze methode is dat het een relatieve kleine footprint heeft, dus heb je nog lekker veel 'arduino-power' over voor de rest van het project...
Succes Rob.
Re: Irremote codes uitlezen
ik heb heel veel last van het ledje dat erbij zit, en van het Rx ledje op mijn nano dat komt door overspraak, maar door afplakken van de leds nu toch stabiel systeem en in een switch case de gelezen codes naar acties vertaald.
paul deelen
shooter@home.nl
shooter@home.nl
3 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 22 gasten