// // machine.ino - voltage rectifier and integrator circuit // for the DT009/1 EEPP build-a-machine project // Written by Ted Burke, 11-2-2019 // unsigned long t_start, t1, t2; int n; void setup() { pinMode(2, OUTPUT); pinMode(3, OUTPUT); Serial.begin(9600); for(n=0 ; n<3 ; ++n) { digitalWrite(3, HIGH); delay(200); digitalWrite(3, LOW); delay(800); } for(n=0 ; n<25 ; ++n) { digitalWrite(3, HIGH); delay(20); digitalWrite(3, LOW); delay(20); } digitalWrite(2, HIGH); digitalWrite(3, LOW); t_start = micros(); t1 = t_start; t2 = t_start; } void loop() { int v1, v2, v_rect; double Vs = 0; while(1) { v1 = analogRead(6); v2 = analogRead(7); v_rect = v1 > v2 ? v1 : v2; t2 = micros(); Vs += (t2 - t1) * 1e-6 * v_rect * (5.0 / 1023.0); t1 = t2; //Serial.print("0 1024 "); Serial.print(v1); Serial.print(" "); Serial.print(v2); Serial.print(" "); Serial.print(v_rect); Serial.print(" "); Serial.println(Vs); if (t2 - t_start > 10000000L) break; } digitalWrite(2, LOW); for(n=0 ; n<75 ; ++n) { digitalWrite(3, HIGH); delay(20); digitalWrite(3, LOW); delay(20); } while(1) { Serial.print("Integrated output voltage = "); Serial.print(Vs); Serial.println(" Vs"); digitalWrite(3, HIGH); delay(200); digitalWrite(3, LOW); delay(800); } }