Created
May 7, 2014 14:03
-
-
Save jnslxndr/684360841fe46535af5a to your computer and use it in GitHub Desktop.
Servo auf Licht
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <Servo.h> | |
| #define SERVO_PIN 9 | |
| #define SENSOR_PIN A0 | |
| #define IDLE 0 | |
| #define ACTIVE 1 | |
| // 1 für mehr info 0 für nix | |
| #define DEBUG 0 | |
| Servo meinServo; | |
| int servo_ziel = 180; // in ° | |
| int servo_idle = 0; // im idle/ruhe zustand | |
| int licht = 0; | |
| int genug_licht = 512; | |
| int state = IDLE; | |
| unsigned long nicht_lesen_bis = 0; | |
| unsigned long lese_pause_zeit = 2000; // sek. * 1000! => millisekunden | |
| void setup() | |
| { | |
| meinServo.attach(SERVO_PIN); | |
| if (DEBUG) { | |
| Serial.begin(9600); | |
| Serial.println("ready"); | |
| } | |
| } | |
| void loop() | |
| { | |
| // darf ich lesen? | |
| if ( millis() >= nicht_lesen_bis ) { | |
| // licht lesen! | |
| licht = analogRead(SENSOR_PIN); | |
| // eventuell licht wert an computer schicken | |
| if (DEBUG) { | |
| Serial.print("Lichtwert:\t"); | |
| Serial.print(licht); | |
| Serial.print("\t .. muss aber\t"); | |
| Serial.println(genug_licht); | |
| } | |
| // ist genug licht? testen wieviel! 0-1023 | |
| if ( licht >= genug_licht && state == IDLE ) { | |
| if (DEBUG) Serial.println("genug licht und status war idle"); | |
| // ich draf nicht mehr lesen bis! | |
| nicht_lesen_bis = millis() + lese_pause_zeit; | |
| // der servo soll da sein | |
| meinServo.write(servo_ziel); | |
| // setze satus auf ACTIVE | |
| state = ACTIVE; | |
| } | |
| // wenn genu | |
| else if ( licht < genug_licht && state == ACTIVE ) { | |
| if (DEBUG) { | |
| Serial.print("nicht genug licht und status war active\t"); | |
| Serial.println(state); | |
| } | |
| // setze status IDLE | |
| state = IDLE; | |
| //servo zurück | |
| meinServo.write(servo_idle); | |
| } | |
| // nicht genug licht, aber idle (optional) | |
| else if ( licht < genug_licht && state == IDLE) { | |
| // mache was anderes (im ruhestand) | |
| if (DEBUG) { | |
| Serial.print("nicht genug licht und status ist idle\t"); | |
| Serial.println(state); | |
| } | |
| } | |
| // genug licht && status ist active (optional) | |
| else if ( licht >= genug_licht && state == ACTIVE) { | |
| // mache was anderes (im ruhestand) | |
| if (DEBUG) { | |
| Serial.print("nicht genug licht und status ist idle\t"); | |
| Serial.println(state); | |
| } | |
| } | |
| } // ENDE nicht_lesen_bis! | |
| // Etwas delay wenn Daten über Serial geschickt werden. | |
| if (DEBUG) { | |
| delay(20); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment