Robotic knapp Masher klockan (2 / 2 steg)
Steg 2: Här är Arduino skiss...
#include Wire.h
#include SoftwareSerial.h
lägga hakparenteser runt biblioteket namn
#include Suli.h
#include Four_Digit_Display_Arduino.h
#include Wire.h
#include "RTClib.h"
#include Servo.h
#include SoftwareSerial.h
Servo servo1, servo2, servo3;
CONST int buttonPin4 = 13, buttonPin3 = 11, buttonPin2 = 12; int värde1, värde2, val3, val4; int but1, but2, but3, but4, curMin, oldMin, Tangenttryckning; Four_Digit_Display_Arduino disp;
void myServo (int curAngle int newAngle, int angleInc, int incDelay, int servoNum) {om (curAngle < newAngle) {för (int vinkel = curAngle; vinkel < newAngle; vinkel += angleInc) {om (servoNum == 1) servo1.write(angle), om (servoNum == 2) servo2.write(angle), om (servoNum == 3) servo3.write(angle); delay(incDelay);}} else om (curAngle > newAngle) {för (int vinkel = curAngle; vinkel > newAngle; vinkel-= angleInc) {om (servoNum == 1) servo1.write(angle); om (servoNum == 2) servo2.write(angle), om (servoNum == 3) servo3.write(angle); delay(incDelay);}}} / *---(deklarera objekt)---* / RTC_DS1307 rtc; Skapa ett RealTimeClock objekt void keyDown() {servo1.write(43); delay(250);} void keyUp() {servo1.write(120); delay(100);} void slideFinger(int pos) {servo3.write(pos); delay(1000);} int getKeyPress (int switchNo) {while(1) {int men = digitalRead(switchNo); delay(20); om (men == låg) {Serial.print("but=low"); Serial.println(but); men = hög; tillbaka 1. {}}} void setup() {Serial.begin(9600); / / ställa upp för Serial Monitor för att kunna se detta arbete servo1.attach(7); / / finger servo delay(10);delay(1000); servo1.write(90); servo3.attach(9); //slider servo delay(10); servo3.write(90); delay(5000);
Wire.BEGIN(); Disp.BEGIN(2,3); Disp.Clear(); disp.pointOn(); pinMode(buttonPin4,INPUT_PULLUP); pinMode(buttonPin3,INPUT_PULLUP); RTC.BEGIN(); Starta RTC bibliotek koden
/ *---(Ange datum och tid. Kommentera ut dessa rader efter inställningen)---* / / / sätta in dessa "/ /" framför raden du inte vill använda / / följande rad uppsättningar på RTC till datum & tid denna skiss var kompilerade rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); Raden anger RTC med en explicit datum & tid, till exempel att ställa in / / 21 maj 2015 kl 18.00 du skulle kalla: (Använd 24 timmars tid) / / rtc.adjust (DateTime (2015, 5, 21, 18, 0, 0));
} //--(end setup)---
void loop() {///String testString = "4"; //val4 = testString.toInt(); //val4= testString.charAt(1); //val4=9; / / disp.pointOn(); / / disp.begin(2,3); / / disp.clear(); DateTime nu = rtc.now(); Läsa data från RTC Chip curMin = now.minute() % 10. Knapptryckning = getKeyPress(); om (curMin! = oldMin) {disp.clear(); värde1 = now.hour() / 10; värde2 = now.hour() % 10; val3 = now.minute() / 10; val4 = now.minute() % 10; slideFinger(36); //move reglage för (int jag = 0; jag < = val4; i ++) {keyDown(); / / finger ner Serial.print("keypress="); Serial.println(i); om (getKeyPress(13) == 1) {disp.display(3,i); delay(10); keyUp(); //finger upp delay(100);} / / disp mins} slideFinger(72); Flytta skjutreglaget för (int jag = 0; jag < = val3; i ++) {keyDown(); / / finger ner Serial.print("keypress=3."); Serial.println(i); om (getKeyPress(11) == 1) {disp.display(2,i); delay(10); keyUp(); //finger upp delay(100);} / / disp mins} slideFinger(101); Flytta skjutreglaget för (int jag = 0; jag < = värde2; i ++) {keyDown(); / / finger ner Serial.print("keypress="); Serial.println(i); om (getKeyPress(12) == 1) {disp.display(1,i); delay(10); keyUp(); //finger upp delay(100);} / / disp mins} slideFinger(139); Flytta skjutreglaget för (int jag = 0; jag < = värde1; i ++) {keyDown(); / / finger ner Serial.print("keypress="); Serial.println(i); om (getKeyPress(10) == 1) {disp.display(0,i); delay(10); keyUp(); //finger upp delay(100);} / / disp mins} //disp.display (0, now.hour()/10); Disp.display (1, now.hour() % 10). Disp.display (2, now.minute()/10); Disp.display (3, now.minute() % 10). servo3.write(90); Delay(3000); Disp.Clear(); Disp.display(0,1); Delay(3000); disp.pointOff(); disp.pointOn();
Serial.Print(Now.Year(), DEC); Serial.Print('/'); Serial.Print(Now.month(), DEC); Serial.Print('/'); Serial.Print(Now.Day(), DEC); Serial.Print(' '); Serial.Print(Now.Hour() % 10, DEC). Serial.Print(':'); Serial.Print(Now.Minute(), DEC); Serial.Print(':'); Serial.Print(Now.Second(), DEC); Serial.println(); oldMin = curMin; } / / oldMin}