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