Étape 1: Arduino Code d’essai
Le problème est, nous avons le code pour la bande LED flexible en C...
Voir mon instructable :
... mais nous avons la bibliothèque infra-rouge dans le code de l’Arduino ! Ne pensez-vous pas que ces deux bits de code peuvent être fusionnées comme ça ? Faux !
Alors tout d’abord Téléchargez notre croquis infra rouge travaillant sur l’Arduino.
In the Jeelabs.org store you can buy a infra red plug and in the library Ports of Jeelabs.org there are examples getting the infra red signal.
Il s’agit de tous les très pratique, et ça marche, mais... vous n’avez pas appris beaucoup trop ! Certainement pas comment porter, de fusionner avec un autre code.
Infra rouges dispositifs :
Vous pouvez aussi et assez facilement, faites-vous l’expéditeur et le récepteur. La diode IR spéciale avec régulateur de fréquence (n’en reçoit la 38KHz) est environ 1,60 euro à conrad.nl et fonctionne tout de suite.
L’expéditeur a besoin d’une minuterie 555 pour envoyer à 38kHz, et vous pouvez trouver les schémas partout, à jeelabs.org, mais aussi ici :
lien:
http://davebodnar.com/Railway/Pulsed_IR_Article/
Portage du code
Si vous commencez à explorer la partie infra-rouge des Ports la première chose que vous remarquez est la différence de digitalWrite et digiWrite de Jeelabs. Mon objectif étant AVR C code dans un projet AVR que je dois réécrire le digiWrites en digitalWrites (puis à C à l’étape suivante). Ce n’est pas trop difficile, car vous pouvez trouver un tableau de conversion facile sur le site de Jeelabs :
http://jeelabs.net/projects/Hardware/wiki/JeeNode
Fonctions à gauche
Ports est en C++ et nous allons à Arduino C, donc les objets c++ doivent être réécrites. C’est aussi facile, aucune structure de l’objet réel n’est utilisé. Ainsi on obtient un script Arduino avec les fonctions de la bibliothèque, ne pas à l’aide de la bibliothèque de Ports plus.
Ce sont les fonctions gauche pour utilisation infrarouge :
configurer (slot4 uint8_t, uint8_t gap256) ;
Poll() ;
Done() ;
et nous avons besoin de certains globals :
uint8_t fente, gap, buf [40] ;
remplissage de char ;
uint32_t prev ;
Maintenant Remplissez ce char variable fonctionne dans le code de l’Arduino, mais pas d’AVR Gcc ! Il doit être changé en une valeur int car il utilise des valeurs négatives...
Si vous avez la diode infra-rouge, vous pouvez tester avec le schéma suivant :
http / /: www.contrechoc.com/instructables/infra_red_arduino_code.pde
où PC3, ou 3 analogique ou numérique 17 est la broche d’entrée pour le périphérique de diode infra rouge (utilisé ici comme une broche numérique).
J’ai utilisé les broches 6 et 7 pour alimenter mon liquide affichage pour tester.
Vous pouvez voir que j’ai inclus les bibliothèques utilisées par les fonctions de la lib de Ports :
WProgram.h
stdint.h
avr/pgmspace.h
util/Atomic.h
Dans le cas contraire vous obtenez des erreurs sur etc état atomique.
(Dans cette esquisse le remplissage est encore un char).
Vérification de
Vérification du code infrarouge travaillant de l’Arduino est facile : il suffit d’utiliser la fenêtre série.
Vérification d’avr gcc n’est pas si simple, si déjà dans la phase d’Arduino Code que j’ai ajouté un cristal liquide pour vérifier si la sortie série apparaissait aussi sur le petit écran liquide crustale. (Ce cristal liquide est attaché à un Attiny2313).
Fichiers cachés de Arduino
Code de l’Arduino est pratique si on le compare à AVR C. Ce rendant facile est le grand succès de l’Arduino ! Mais aller un petit peu plus loin comme moi, et il faut comprendre un peu comment ce succès a été rendu possible.
Donc derrière l’ARduino srcipt est trouvé C.
Les ports utilise également ces fichiers spéciaux de l’Arduino (cachés dans les dossiers de l’arduino et lié avec un makefile invisible).
Par exemple :
En AVR Gcc, que je ne peux pas utiliser digitalWrite etc, à moins que soit je fais ma propre fonction ou utiliser les fichiers de l’Arduino. De même pour la fonction de micro.