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