cgnuino
CgnStrobe.cpp
1 
8 #include "Arduino.h"
9 #include "cgnuino.h"
10 
16 CgnStrobe::CgnStrobe(byte p, uint32_t l) {
17  first = p;
18  if (l > 2000) {
19  len = l / 1000;
20  us = false;
21  } else {
22  len = l;
23  us = true;
24  }
25  for (int i = 0; i < 9; i++) {
26  pinMode(first + i, OUTPUT);
27  digitalWrite(first + i, LOW);
28  }
29 }
30 
35 uint32_t CgnStrobe::out(String s) {
36  bool tmp;
37  byte n = s.length();
38  uint32_t time;
39 
40  time = millis();
41  for (int i = 0; i < n; i++) {
42  //Serial.print(s.charAt(i));
43  //Serial.print(" ");
44 
45  for (int j = 7; j >= 0; j--) {
46  tmp = (byte(s.charAt(i)) & _BV(j)) > 0;
47  digitalWrite(first + j, tmp ? HIGH : LOW);
48  //Serial.print(tmp);
49  }
50  digitalWrite(first + 8, HIGH);
51  //Serial.println("");
52  wait();
53 
54  digitalWrite(first + 8, LOW);
55  wait();
56  }
57 
58  for (int j = 7; j >= 0; j--) {
59  digitalWrite(first + j, LOW);
60  }
61 
62  return millis() - time;
63 }
64 
65 void CgnStrobe::wait() {
66  if (us) {
67  delayMicroseconds(len);
68  } else {
69  delay(len);
70  }
71 }
72 
uint32_t out(String)
Emits arbitrary text by (8 + 1)-bit digital outputs.
Definition: CgnStrobe.cpp:35
CgnStrobe(byte, uint32_t=5)
Constructor.
Definition: CgnStrobe.cpp:16