// step motor clock // skalgo, 2016 // 4096 kroków/obrót int P0 = 9; int P1 = 10; int P2 = 11; int P3 = 12; int _step=0; unsigned long int start; int step=0; void setup() { Serial.begin(9600); pinMode(P0,OUTPUT); pinMode(P1,OUTPUT); pinMode(P2,OUTPUT); pinMode(P3,OUTPUT); pinMode(2,INPUT_PULLUP); start=millis(); } const unsigned char bit[]={1,2,4,8,16,32,64,128}; void do_step(byte st) { byte b; switch(_step) { case 0: b=0b1000; break; case 1: b=0b1100; break; case 2: b=0b0100; break; case 3: b=0b0110; break; case 4: b=0b0010; break; case 5: b=0b0011; break; case 6: b=0b0001; break; case 7: b=0b1001; break; } digitalWrite(P0,(b&bit[0])==bit[0]); digitalWrite(P1,(b&bit[1])==bit[1]); digitalWrite(P2,(b&bit[2])==bit[2]); digitalWrite(P3,(b&bit[3])==bit[3]); delay(5); digitalWrite(P0,LOW); digitalWrite(P1,LOW); digitalWrite(P2,LOW); digitalWrite(P3,LOW); _step--; if(_step<0) _step=7; if(st) { step++; if(step==4096) { start=millis(); step=0; } } } void loop() { float m; float n=86400000.0/4096.0*((float)step+1.0); do { if(millis()