project:biolab:centrifuge-sketch
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| project:biolab:centrifuge-sketch [2012/05/12 00:45] – pasky | project:biolab:centrifuge-sketch [2014/10/11 15:01] (current) – button-controlled centrifuge pasky | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | Centrifuge controlled over serial USB: | ||
| + | <code lang=" | ||
| + | #include < | ||
| + | |||
| + | Servo disk; | ||
| + | |||
| + | int diskpin = 3; | ||
| + | int diskstop = 50, diskmin = 100, diskmax = 165; | ||
| + | |||
| + | int optpin = 8; | ||
| + | |||
| + | void setup() | ||
| + | { | ||
| + | Serial.begin(9600); | ||
| + | pinMode(optpin, | ||
| + | digitalWrite(optpin, | ||
| + | |||
| + | disk.attach(diskpin); | ||
| + | delay(2000); | ||
| + | disk.write(diskstop); | ||
| + | delay(3000); | ||
| + | } | ||
| + | |||
| + | int cur_time = 0; | ||
| + | int edge_ones = 0; | ||
| + | char last_opt = 0; | ||
| + | |||
| + | void loop() | ||
| + | { | ||
| + | char optstatus = digitalRead(optpin); | ||
| + | if (optstatus == 1 && last_opt == 0) | ||
| + | edge_ones++; | ||
| + | last_opt = optstatus; | ||
| + | |||
| + | int new_time = millis()/ | ||
| + | if (new_time != cur_time) { | ||
| + | cur_time = new_time; | ||
| + | Serial.print(edge_ones * 60, DEC); | ||
| + | Serial.print(" | ||
| + | edge_ones = 0; | ||
| + | |||
| + | Serial.println(optstatus, | ||
| + | |||
| + | if (Serial.available()) { | ||
| + | char buf[8] = ""; | ||
| + | Serial.readBytesUntil(' | ||
| + | if (buf[0]) { | ||
| + | int num = atoi(buf); | ||
| + | Serial.println(num, | ||
| + | if (num == 0) | ||
| + | disk.write(diskstop); | ||
| + | else if (1 <= num && num <= 100) | ||
| + | disk.write(map(num, | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Centrifuge controlled via button: | ||
| + | |||
| + | <code lang=" | ||
| + | #include < | ||
| + | |||
| + | Servo disk; | ||
| + | |||
| + | int diskpin = 8; | ||
| + | int diskstop = 50, diskmin = 100, diskmax = 165; | ||
| + | |||
| + | int optpin = 3; | ||
| + | int btnpin = 12; | ||
| + | int ledpin0 = 13, ledpin1 = 11; | ||
| + | |||
| + | void setup() | ||
| + | { | ||
| + | Serial.begin(9600); | ||
| + | pinMode(optpin, | ||
| + | digitalWrite(optpin, | ||
| + | |||
| + | pinMode(btnpin, | ||
| + | digitalWrite(btnpin, | ||
| + | |||
| + | pinMode(ledpin0, | ||
| + | digitalWrite(ledpin0, | ||
| + | pinMode(ledpin1, | ||
| + | digitalWrite(ledpin1, | ||
| + | |||
| + | #if 0 | ||
| + | disk.attach(diskpin); | ||
| + | delay(2000); | ||
| + | disk.write(diskstop); | ||
| + | delay(3000); | ||
| + | #else | ||
| + | disk.attach(diskpin); | ||
| + | disk.write(diskstop); | ||
| + | delay(4000); | ||
| + | #endif | ||
| + | |||
| + | digitalWrite(ledpin0, | ||
| + | digitalWrite(ledpin1, | ||
| + | } | ||
| + | |||
| + | int cur_time = 0; | ||
| + | int edge_ones = 0; | ||
| + | char last_opt = 0; | ||
| + | int status = 0; // 0: off, 1: on | ||
| + | |||
| + | void loop() | ||
| + | { | ||
| + | char optstatus = digitalRead(optpin); | ||
| + | if (optstatus == 1 && last_opt == 0) | ||
| + | edge_ones++; | ||
| + | last_opt = optstatus; | ||
| + | |||
| + | int new_time = millis()/ | ||
| + | if (new_time != cur_time) { | ||
| + | cur_time = new_time; | ||
| + | Serial.print(edge_ones * 60, DEC); | ||
| + | Serial.print(" | ||
| + | edge_ones = 0; | ||
| + | |||
| + | Serial.println(optstatus, | ||
| + | } | ||
| + | |||
| + | char btnstatus = ! digitalRead(btnpin); | ||
| + | if (status == 0 && btnstatus == 1) { | ||
| + | digitalWrite(ledpin0, | ||
| + | digitalWrite(ledpin1, | ||
| + | disk.write(diskmax); | ||
| + | status = 1; | ||
| + | } else if (status == 1 && btnstatus == 0) { | ||
| + | disk.write(diskstop); | ||
| + | digitalWrite(ledpin0, | ||
| + | digitalWrite(ledpin1, | ||
| + | status = 0; | ||
| + | } | ||
| + | } | ||
| + | </ | ||
project/biolab/centrifuge-sketch.txt · Last modified: 2014/10/11 15:01 by pasky