Stap 1: Test Arduino Code
Het probleem is, we hebben de code voor de flexibele LED-strip in C...
Zie mijn instructable:
... maar we hebben de infra rood bibliotheek in Arduino code! Denkt u dat deze twee bits van code die kunnen worden samengevoegd? Verkeerd!
Dus eerst onze infra-rood schets aan de Arduino werkt krijgen.
In de Jeelabs.org-store kun je een infra rood stekker kopen en in de bibliotheek zijn poorten van Jeelabs.org er voorbeelden krijgen van het infrarood signaal.
Dit is allemaal erg handig, en het werkt, maar... je niet te veel hebben geleerd! Zeker niet hoe te het poort, samenvoegen met andere code.
Infra rood apparaten:
U kunt ook, en vrij gemakkelijk zelf de ontvanger en de afzender. De speciale IR diode met frequentie controller (alleen het ontvangen van de 38 kHz) is ongeveer 1.60 euro bij conrad.nl en werkt meteen.
De afzender moet een 555 timer om te sturen op 38kHz en vindt u het schema's overal, op jeelabs.org, maar ook hier:
link:
http://davebodnar.com/Railway/Pulsed_IR_Article/
Porten van de code
Als u start met het verkennen van de infra-rood deel van havens is het eerste wat dat u opvalt het verschil in digitalWrite en digiWrite van Jeelabs. Aangezien mijn doel is AVR C-code in een AVR project die ik moet herschrijven van de digiWrites in digitalWrites (en vervolgens naar C in de volgende stap). Dit is niet te moeilijk, omdat u een eenvoudige conversietabel op de Jeelabs site kunt vinden:
http://jeelabs.net/projects/hardware/wiki/JeeNode
Functies links
Poorten is in C++ en gaan we naar de Arduino C, dus de c ++-objecten moeten worden herschreven. Dit is ook makkelijk, geen echte object-structuur wordt gebruikt. Zo krijgen we een Arduino script met de functies van de bibliotheek, niet met behulp van de bibliotheek poorten meer.
Dit zijn de functies links voor infrarood gebruik:
configureren (uint8_t slot4, uint8_t gap256);
Poll();
Done();
en we moeten sommige globals:
uint8_t-sleuf, kloof, buf [40];
char vullen;
uint32_t prev;
Nu deze char vullen werkt variabele in Arduino code, maar niet in AVR Gcc! Het moet worden veranderd in een int, omdat het gebruik maakt van negatieve waarden...
Hebt u de infrarood diode kun je met het volgende schema:
http / /: www.contrechoc.com/instructables/infra_red_arduino_code.pde
waar PC3, of 3 analoge of digitale 17 is de invoer pin voor de infra-rood diode apparaat (gebruikte hier als een digital PIN).
Ik heb pin 6 en 7 voor het aandrijven van mijn vloeistof weergave gebruikt voor het testen.
U kunt zien dat ik bibliotheken gebruikt door de functies van de havens lib opgenomen:
WProgram.h
stdint.h
AVR/pgmspace.h
util/Atomic.h
Anders krijg je fouten op ATOMIC staat etc.
(In deze schets de vulling is nog steeds een karakter.)
Controleren
Controle van de infra-rood code werken van de Arduino is eenvoudig: gewoon gebruik maken van de seriële venster.
Pointering vanuit avr gcc is niet zo eenvoudig, dus al in de fase van de Arduino Code die ik heb toegevoegd een vloeibare kristallen om te controleren als de uitgang voor seriële ook op het kleine scherm van Liquid aardkorst weergegeven was. (Deze vloeibare kristallen is verbonden aan een Attiny2313.)
Verborgen bestanden van de Arduino
Arduino code is handig als je het vergelijkt met AVR C. Deze waardoor het gemakkelijk is het grote succes van de Arduino! Maar gaan een stapje verder zoals ik, en u moet begrijpen een beetje hoe dit succes werd mogelijk gemaakt.
Dus achter de ARduino is srcipt gelegen C.
Poorten gebruikt ook de speciale Arduino-bestanden (verborgen in de arduino mappen en gekoppeld aan een onzichtbare makefile).
Bijvoorbeeld:
In AVR Gcc die ik digitalWrite etc niet gebruiken tenzij ofwel ik maken van mijn eigen functie of gebruik van de Arduino-bestanden. Hetzelfde geldt voor de functie van micro.