Étape 6: Code
J’ai perdu la version complète du code et il s’agit de la phase de test mais distant fonctionne, il faut que deuxième décodeur configuré. Je le récupérer ou aussitôt que possible le réécrire et téléchargez-le ici.
EDIT : J’ai trouvé et téléchargé la version complète du code.
Commande à distance
Tout d’abord importer la bibliothèque IRremote et initialiser il :
#include //import bibliothèque avant d’inclure de ici
octet RECV_PIN = 11 ;
IRrecv irrecv(RECV_PIN) ; initialisation
résultats de la decode_results ;
Setup() Inside
irrecv.enableIRIn() ; activez ir
à l’intérieur de loop()
if (irrecv.decode (et résultats)) //this vérifie si les nouvelles données sont arrivés
{//inside vérifier quel bouton a été activé
Si (results.value == 0xCC91D36E) {//volume pressé vers le bas
volcnt-=1 ; muxWrite(volcnt) ;
}
ElseIf (results.value == 0xE936013E) {//volume up pressé
volcnt += 1 ; muxWrite(volcnt) ;
}
Delay(100) ; Cette étape est facultative, qu'il ralentit juste le changement de volume
irrecv.Resume() ; Attendez les prochaines données
}
Encodeurs rotatifs
Aucune bibliothèque supplémentaire n’est nécessaire pour les encodeurs.
Programme d’installation
#define ENC_A 8
#define ENC_B 9
#define ENC_PORT PINB
Setup()
pinMode (entrée, ENC_A) ;
pinMode (entrée, ENC_B) ;
Loop()
tmpdata = read_encoder() ; lire le nouvel Etat soit -1 gauche tourner, 0 tour ou 1 clignotant droit
Si (tmpdata) {tmpdata += volcnt ; muxWrite(volcnt);}
Read_encoder()
J’ai trouvé cette fonction quelque part en ligne
int8_t read_encoder() {}
public static int8_t enc_states [] = {0, - 1,1,0,1,0,0, -1, - 1,0,0,1,0,1,-1,0} ;
uint8_t statique old_AB = 0 ;
old_AB << = 2 ; n’oubliez pas de précédent état old_AB | = (ENC_PORT & 0 x 03) ; Ajoutez l’actuel état de retour (enc_states [(old_AB & 0x0f)]) ;
}
Reste du code est le contrôle sorties, simplement écrire LOW ou HIGH sur les broches.
atténuateur - full.ino