project:biolab:ratapa.pde
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | project:biolab:ratapa.pde [2011/06/17 13:07] (current) – created stick | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ===== Rodent Enrichment - Sketch ===== | ||
+ | < | ||
+ | #include < | ||
+ | |||
+ | int door_pin = 2; | ||
+ | int sensor_pin[] = { 3, 4, 5, 6, 7, 8 }; | ||
+ | #define sensors (sizeof(sensor_pin)/ | ||
+ | int servo_pin[] = { 9, 10 }; | ||
+ | #define servos (sizeof(servo_pin)/ | ||
+ | int servo_pos[][4] = { { 80, 10, 25, 45 }, { 5, 80, 65, 45 } }; | ||
+ | |||
+ | Servo servo[2]; | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | Serial.begin(9600); | ||
+ | int i; | ||
+ | pinMode(door_pin, | ||
+ | digitalWrite(door_pin, | ||
+ | for (i = 0; i < sensors; i++) | ||
+ | pinMode(sensor_pin[i], | ||
+ | for (i = 0; i < servos; i++) { | ||
+ | servo[i].attach(servo_pin[i]); | ||
+ | servo[i].write(servo_pos[i][2]); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void calibrate() | ||
+ | { | ||
+ | int i; | ||
+ | for (i = 0; i < 80; i++) { | ||
+ | servo[0].write(i); | ||
+ | Serial.println(i); | ||
+ | delay(250); | ||
+ | } | ||
+ | delay(1000); | ||
+ | } | ||
+ | |||
+ | void sensor_info() | ||
+ | { | ||
+ | int i; | ||
+ | for (i = 0; i < sensors; i++) { | ||
+ | bool state = digitalRead(sensor_pin[i]); | ||
+ | Serial.print(state); | ||
+ | } | ||
+ | Serial.println(); | ||
+ | } | ||
+ | |||
+ | void loop_ro() | ||
+ | { | ||
+ | sensor_info(); | ||
+ | digitalWrite(door_pin, | ||
+ | delay(1000); | ||
+ | sensor_info(); | ||
+ | digitalWrite(door_pin, | ||
+ | delay(1000); | ||
+ | } | ||
+ | |||
+ | void loop_rw() | ||
+ | { | ||
+ | if (Serial.available()) { | ||
+ | unsigned char cmd = Serial.read(); | ||
+ | int sid = 0; | ||
+ | switch (cmd) { | ||
+ | case ' | ||
+ | case ' | ||
+ | case ' | ||
+ | case ' | ||
+ | unsigned char pos = Serial.read(); | ||
+ | servo[sid].write(servo_pos[sid][pos - ' | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | sensor_info(); | ||
+ | delay(100); | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | loop_rw(); return; // Interactive | ||
+ | loop_ro(); return; // Non-interactive, | ||
+ | calibrate(); | ||
+ | } | ||
+ | </ |
project/biolab/ratapa.pde.txt · Last modified: 2011/06/17 13:07 by stick