Código
código Arduino
// projetos de hobby // ArduinoNanoPropellerLEDAnalogClock20190403Aint LED1 =2; int LED2 =3; int LED3 =4; int LED4 =5; int LED5 =6; int LED6 =7; int LED7 =8; int LED8 =9; int LED9 =10; int LED10 =11; int LED11 =12; int LED12 =A1; int LED13 =A2; int LED14 =A3; int LED15 =A4; int LED16 =A5; int sensorPin =A0; int n não assinado, ADCvalue, propeller_posn; tempo anterior sem sinal longo =0; horas de byte =12; // definir horasbyte minutos =15; // definir minutosbyte segundos =00; // define segundosint val; void setup () {pinMode (LED1, OUTPUT); pinMode (LED2, SAÍDA); pinMode (LED3, SAÍDA); pinMode (LED4, SAÍDA); pinMode (LED5, SAÍDA); pinMode (LED6, SAÍDA); pinMode (LED7, SAÍDA); pinMode (LED8, SAÍDA); pinMode (LED9, SAÍDA); pinMode (LED10, SAÍDA); pinMode (LED11, SAÍDA); pinMode (LED12, SAÍDA); pinMode (LED13, SAÍDA); pinMode (LED14, SAÍDA); pinMode (LED15, SAÍDA); pinMode (LED16, SAÍDA); pinMode (sensorPin, INPUT_PULLUP); if (horas ==12) horas =0;} void loop () {val =digitalRead (sensorPin); enquanto (val ==LOW) {val =digitalRead (sensorPin); } if (millis ()> =(previousTime)) {previousTime =previousTime + 1000; segundos =segundos + 1; if (segundos ==60) {segundos =0; minutos =minutos + 1; } se (minutos ==60) {minutos =0; horas =horas + 1; } if (horas ==12) {horas =0; }} propeller_posn =30; n =0; while (n <60) {drawMinuteMarker (); if ((propeller_posn ==0) || (propeller_posn ==5) || (propeller_posn ==10) || (propeller_posn ==15) || (propeller_posn ==20) || (propeller_posn ==25) || (propeller_posn ==30) || (propeller_posn ==35) || (propeller_posn ==40) || (propeller_posn ==45) || (propeller_posn ==50) || (propeller_posn ==55)) drawHourMarker (); if ((propeller_posn ==0) || (propeller_posn ==15) || (propeller_posn ==30) || (propeller_posn ==45)) drawQuarterMarker (); if ((propeller_posn ==horas * 5) || ((propeller_posn ==0) &&(horas ==0))) drawHoursHand (); if (propeller_posn ==minutos) drawMinutesHand (); if (propeller_posn ==segundos) drawSecondsHand (); atrasoMicrosegundos (140); // para largura de pixel do LED (alterar o valor de acordo com a velocidade do motor. Aumentar para velocidade baixa, diminuir para motor de alta velocidade) displayClear (); drawInner_Circle (); atraso Microssegundos (600); // para o intervalo entre os pixels do LED / marcadores de minutos (altere o valor de acordo com a velocidade do motor. Aumente para velocidade baixa, diminua para motor de alta velocidade) n ++; propeller_posn ++; if (propeller_posn ==60) propeller_posn =0; } val =digitalRead (sensorPin); enquanto (val ==HIGH) {val =digitalRead (sensorPin); }} // ===========================void displayClear () {digitalWrite (LED1, LOW); digitalWrite (LED2, LOW); digitalWrite (LED3, BAIXO); digitalWrite (LED4, LOW); digitalWrite (LED5, BAIXO); digitalWrite (LED6, BAIXO); digitalWrite (LED7, BAIXO); digitalWrite (LED8, BAIXO); digitalWrite (LED9, BAIXO); digitalWrite (LED10, LOW); digitalWrite (LED11, LOW); digitalWrite (LED12, LOW); digitalWrite (LED13, BAIXO); digitalWrite (LED14, BAIXO); digitalWrite (LED15, BAIXO); digitalWrite (LED16, LOW); } void drawMinuteMarker () {digitalWrite (LED16, HIGH); } void drawHourMarker () {digitalWrite (LED15, HIGH); digitalWrite (LED14, ALTO); } void drawQuarterMarker () {digitalWrite (LED13, HIGH); digitalWrite (LED12, ALTO); } void drawHoursHand () {digitalWrite (LED1, HIGH); digitalWrite (LED2, ALTO); digitalWrite (LED3, ALTO); digitalWrite (LED4, ALTO); digitalWrite (LED5, ALTO); digitalWrite (LED6, ALTO); digitalWrite (LED7, ALTO); } void drawMinutesHand () {digitalWrite (LED1, HIGH); digitalWrite (LED2, ALTO); digitalWrite (LED3, ALTO); digitalWrite (LED4, ALTO); digitalWrite (LED5, ALTO); digitalWrite (LED6, ALTO); digitalWrite (LED7, ALTO); digitalWrite (LED8, ALTO); digitalWrite (LED9, ALTO); } void drawSecondsHand () {digitalWrite (LED1, HIGH); digitalWrite (LED2, ALTO); digitalWrite (LED3, ALTO); digitalWrite (LED4, ALTO); digitalWrite (LED5, ALTO); digitalWrite (LED6, ALTO); digitalWrite (LED7, ALTO); digitalWrite (LED8, ALTO); digitalWrite (LED9, ALTO); digitalWrite (LED10, ALTO); digitalWrite (LED11, ALTO); } void drawInner_Circle () {digitalWrite (LED1, HIGH); atraso Microssegundos (30); digitalWrite (LED1, BAIXO); }