4x4 Keypad la partie 2

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 :

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 :-)

 

Produktvorstellungen

Laisser un commentaire

Tous les commentaires sont modérés avant d'être publiés