Powoli uczę się Arduino. Idzie całkiem nieźle. Aby praktycznie wykorzystać materiał, który już poznałem nadszedł czas na praktykę. Z zabawy z czystym ATMega zostały mi dwa zmontowane na płytkach prototypowych układy z rejestrem przesuwnym. Postanowiłem podłączyć je do Arduino i stosownie oprogramować.
Pierwszy układ to zabawa z diodami LED. Schemat zmontowanego układu przedstawia rysunek.
Program sterujący wygląda następująco:
int latchPin = 8;
//Pin connected to SH_CP of 74HC595
int clockPin = 12;
////Pin connected to DS of 74HC595
int dataPin = 11;
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
int i;
for (i=0;i<=7;i++){
digitalWrite(latchPin,LOW);
shiftOut(dataPin,clockPin,MSBFIRST,pow2(i));
digitalWrite(latchPin,HIGH);
delay(50);
}
for (i=7;i>=0;i--){
digitalWrite(latchPin,LOW);
shiftOut(dataPin,clockPin,MSBFIRST,pow2(i));
digitalWrite(latchPin,HIGH);
delay(50);
}
}
int pow2(int n)
{
int k;
int result;
result=1;
if (n==0) {return 1;} else {
for (k=0;k<n;k++){ result=result*2;}
}
return result;
}
Efekt działania ilustruje film:
Drugi projekt polegał na wykorzystaniu 7 segmentowego wyświetlacza LED.
Wsad do Arduino:
int latchPin = 8;
//Pin connected to SH_CP of 74HC595
int clockPin = 12;
////Pin connected to DS of 74HC595
int dataPin = 11;
int matrix[10];
void setup() {
//set pins to output because they are addressed in the main loop
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
matrix[0]=0b00111111;
matrix[1]=0b00000110;
matrix[2]=0b01011011;
matrix[3]=0b01001111;
matrix[4]=0b01100110;
matrix[5]=0b01101101;
matrix[6]=0b01111101;
matrix[7]=0b00000111;
matrix[8]=0b01111111;
matrix[9]=0b01101111;
}
void loop() {
int i;
for(i=0;i<=9;i++){
digitalWrite(latchPin,LOW);
shiftOut(dataPin,clockPin,MSBFIRST,~matrix[i]);
digitalWrite(latchPin,HIGH);
delay(1000);
}
}
Film ilustruje działanie układu:


Brak komentarzy:
Prześlij komentarz