diff options
Diffstat (limited to 'eeg.ino')
-rw-r--r-- | eeg.ino | 34 |
1 files changed, 23 insertions, 11 deletions
@@ -73,22 +73,33 @@ class Keepon { } void check_state() { - int r = analogRead(0); - int t = millis() - last_time; - if (r <= 512) { + int v; + if ((v=analogRead(0)) <= 512) { digitalWrite(SDA, LOW); digitalWrite(SCL, LOW); - set_state(WAITING,r); + current_state = WAITING; } else if (current_state == WAITING) { last_time = millis(); - set_state(MASTERING,0); + digitalWrite(SDA, LOW); + digitalWrite(SCL, LOW); + current_state = MASTERING; + v=0; + } + else if (current_state == MASTERING && (v=millis()-last_time) < 1000) { + v/=100; } - else if (current_state == MASTERING && t > 1000) { + else if (current_state == MASTERING) { Wire.begin(); TWBR = ((F_CPU / MK_FREQ) - 16) / 2; - set_state(READY,t/10); + current_state = READY; + v = queue.length(); } + else if (current_state == READY) { + v = queue.length(); + } + + display_callback(current_state,v); } public: @@ -150,17 +161,18 @@ class Keepon { Brain brain(Serial); void kscan_callback(Keepon::State s, int n) { + uView.setCursor(25,0); if (s == Keepon::WAITING) { - uView.setCursor(25,0);uView.print("K?"); + uView.print("K?"); } else if (s == Keepon::MASTERING){ - uView.setCursor(25,0);uView.print("K.."); + uView.print("K.."); } else if (s == Keepon::READY){ - uView.setCursor(25,0);uView.print("K!"); + uView.print("K!"); } else if (s == Keepon::QFULL){ - uView.setCursor(25,0);uView.print("KO"); + uView.print("KO"); } uView.setCursor(40,0);uView.print(n); } |