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