Dans notre Blog nous avons montré comment Clavier AZ-Delivery et assigne correctement les 16 touches. Dans notre prochain exemple, nous voulons utiliser le clavier de manière créative avec un buzzer passif Imaginer. Nous suivons l’exemple Keypad_Piano sur arduino.cc. Nous pouvons négliger l’affectation de broches dans cet exemple parce qu’ils peuvent être cartographiés comme désiré, mais nous montrons une façon intéressante de passer d’une fréquence PWM stockée à l’aide de deux registres de décalage 8 bits utilisés comme minuterie dans le 328P.
Ce projet est destiné aux utilisateurs avancés parce qu’il nécessite une connaissance approfondie du 328P (minuterie et registre)
Pour ce faire, nous avons besoin de :
- AZ-Delivery Microkontoller, compatible avec Arduino Uno R3
- Matrix Keypad 4x4
- module de buzzer passif
Tout d’abord, nous connectons les broches suivantes:
- Keypad Pin 1 - 8 an Uno Pin 2 - 9
- nous fournissons le buzzer avec 5V et GND de l’Uno et la broche marquée de "S" sur la broche 11
Voici à quoi ressemble notre code :
Affectation de broches pour le clavier #define c3 9 #define c2 8 #define c1 7 #define c0 6 #define r3 5 #define R2 4 #define r1 3 #define r0 2 Vide Configuration() { Série.Commencer(9600); pinMode(c0,INPUT_PULLUP); pinMode(c1,INPUT_PULLUP); pinMode(c2,INPUT_PULLUP); pinMode(c3,INPUT_PULLUP); pinMode(r0,Sortie); pinMode(r1,Sortie); pinMode(R2,Sortie); pinMode(r3,Sortie); pinMode(11,Sortie); pour notre module Buzzer } Vide Boucle(){ digitalWrite (en)(r0,Faible); digitalWrite (en)(r1,Haute); digitalWrite (en)(R2,Haute); digitalWrite (en)(r3,Haute); Si(digitalRead (en)(c0)==Faible){ TCCR2A (EN) = B01000011; Affectation de fréquences TCCR2B (EN) = B00001110; a lieu ici OCR2A=119; en utilisant le registre et la fréquence de l’horloge Retard(100); TCCR2B (EN)=B00001000; TCCR2A (EN) = B000000000; digitalWrite (en)(11,Faible);} Autre Si(digitalRead (en)(c1)==Faible){ TCCR2A (EN) = B01000011; TCCR2B (EN) = B00001110; OCR2A=106; Retard(100); TCCR2B (EN)=B00001000; TCCR2A (EN) = B000000000; digitalWrite (en)(11,Faible);} Autre Si(digitalRead (en)(c2)==Faible){ TCCR2A (EN) = B01000011; TCCR2B (EN) = B00001110; OCR2A=94; Retard(100); TCCR2B (EN)=B00001000; TCCR2A (EN) = B000000000; digitalWrite (en)(11,Faible);} Autre Si(digitalRead (en)(c3)==Faible){ TCCR2A (EN) = B01000011; TCCR2B (EN) = B00001110; OCR2A=89; Retard(100); TCCR2B (EN)=B00001000; TCCR2A (EN) = B000000000; digitalWrite (en)(11,Faible);} digitalWrite (en)(r0,Haute); digitalWrite (en)(r1,Faible); digitalWrite (en)(R2,Haute); digitalWrite (en)(r3,Haute); Si(digitalRead (en)(c0)==Faible){ TCCR2A (EN) = B01000011; TCCR2B (EN) = B00001110; OCR2A=79; Retard(100); TCCR2B (EN)=B00001000; TCCR2A (EN) = B000000000; digitalWrite (en)(11,Faible);} Autre Si(digitalRead (en)(c1)==Faible){ TCCR2A (EN) = B01000011; TCCR2B (EN) = B00001110; OCR2A=71; Retard(100); TCCR2B (EN)=B00001000; TCCR2A (EN) = B000000000; digitalWrite (en)(11,Faible);} Autre Si(digitalRead (en)(c2)==Faible){ TCCR2A (EN) = B01000011; TCCR2B (EN) = B00001110; OCR2A=63; Retard(100); TCCR2B (EN)=B00001000; TCCR2A (EN) = B000000000; digitalWrite (en)(11,Faible);} Autre Si(digitalRead (en)(c3)==Faible){ TCCR2A (EN) = B01000011; TCCR2B (EN) = B00001110; OCR2A=59; Retard(100); TCCR2B (EN)=B00001000; TCCR2A (EN) = B000000000; digitalWrite (en)(11,Faible);} digitalWrite (en)(r0,Haute); digitalWrite (en)(r1,Haute); digitalWrite (en)(R2,Faible); digitalWrite (en)(r3,Haute); Si(digitalRead (en)(c0)==Faible){ TCCR2A (EN) = B01000011; TCCR2B (EN) = B00001110; OCR2A=25; Retard(100); TCCR2B (EN)=B00001000; TCCR2A (EN) = B000000000; digitalWrite (en)(11,Faible);} Autre Si(digitalRead (en)(c1)==Faible){ TCCR2A (EN) = B01000011; TCCR2B (EN) = B00001110; OCR2A=20; Retard(100); TCCR2B (EN)=B00001000; TCCR2A (EN) = B000000000; digitalWrite (en)(11,Faible);} Autre Si (digitalRead (en)(c2)==Faible){ TCCR2A (EN) = B01000011; TCCR2B (EN) = B00001110; OCR2A=10; Retard(100); TCCR2B=B00001000; TCCR2A = B00000000; digitalWrite(11,FAIBLE);} autre si(digitalRead(c3)==FAIBLE){ TCCR2A = B01000011; TCCR2B = B00001110; OCR2A=50; retard(100); TCCR2B=B00001000; TCCR2A = B00000000; digitalWrite(11,FAIBLE);} digitalWrite(r0,HAUTE); digitalWrite(r1,HAUTE); digitalWrite(R2,HAUTE); digitalWrite(r3,FAIBLE); si(digitalRead(c0)==FAIBLE){ TCCR2A = B01000011; TCCR2B = B00001110; OCR2A=50; retard(100); TCCR2B=B00001000; TCCR2A = B00000000; digitalWrite(11,FAIBLE);} autre si(digitalRead(c1)==FAIBLE){ TCCR2A = B01000011; TCCR2B = B00001110; OCR2A=50; retard(100); TCCR2B=B00001000; TCCR2A = B00000000; digitalWrite(11,FAIBLE);} autre si(digitalRead(c2)==FAIBLE){ TCCR2A = B01000011; TCCR2B = B00001110; OCR2A=50; retard(100); TCCR2B=B00001000; TCCR2A = B00000000; digitalWrite(11,FAIBLE);} autre si(digitalRead(c3)==FAIBLE){ TCCR2A = B01000011; TCCR2B = B00001110; OCR2A=50; retard(100); TCCR2B=B00001000; TCCR2A = B00000000; digitalWrite(11,FAIBLE);} } // Mithilfe der Formel: Hz = 16 MHz / préscalaire / (OCRA + 1) / 2
// lassen sich so PWM Frequenzen von bis zu 8MHz erzeugen
Viel Spass beim Basteln und bis zum nächsten mal :-)