Adding motionsensor and starting param thing
This commit is contained in:
		
							
								
								
									
										204
									
								
								biciClock.ino
									
									
									
									
									
								
							
							
						
						
									
										204
									
								
								biciClock.ino
									
									
									
									
									
								
							| @@ -10,7 +10,7 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
| #define STATION_UID "93" // location id | #define STATION_UID "93" // location id | ||||||
| #define HOST "testing.lbsfilm.at" | #define HOST "bici.lbsfilm.at" | ||||||
|  |  | ||||||
| #define REFRESH 1000 | #define REFRESH 1000 | ||||||
|  |  | ||||||
| @@ -45,17 +45,35 @@ String bicis = ""; | |||||||
| String hours = ""; | String hours = ""; | ||||||
| String minutes = ""; | String minutes = ""; | ||||||
|  |  | ||||||
|  | char stationId[6] = "93"; | ||||||
|  | bool displayOn = false; | ||||||
|  |  | ||||||
|  | //flag for saving data | ||||||
|  | bool shouldSaveConfig = false; | ||||||
|  |  | ||||||
|  | //callback notifying us of the need to save config | ||||||
|  | void saveConfigCallback () { | ||||||
|  |   Serial.println("Should save config"); | ||||||
|  |   shouldSaveConfig = true; | ||||||
|  | } | ||||||
|  |  | ||||||
| void setup() { | void setup() { | ||||||
|   Serial.begin(115200); |   Serial.begin(115200); | ||||||
|   //WiFiManagerParameter custom_station_id)("server", "station id", mqtt_server, 40); |   //EEPROM.begin(512); | ||||||
|   EEPROM.begin(512); |   //stationId = EEPROM.read(25); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   WiFiManagerParameter custom_station_id("server", "station id", stationId, 6); | ||||||
|   WiFiManager wifiManager; |   WiFiManager wifiManager; | ||||||
|  |  | ||||||
|  |   wifiManager.setSaveConfigCallback(saveConfigCallback); | ||||||
|   wifiManager.autoConnect("ConfigureClock"); |   wifiManager.autoConnect("ConfigureClock"); | ||||||
|   //wifiManager.addParameter(&custom_station_id); |   wifiManager.addParameter(&custom_station_id); | ||||||
|   //Serial.println(custom_station_id).getValue()); |   Serial.println(custom_station_id.getValue()); | ||||||
|  |   if (shouldSaveConfig) { | ||||||
|  |     Serial.println("saving config"); | ||||||
|  |     //EEPROM.write(25); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   clock.begin(); |   clock.begin(); | ||||||
|   clock.show(); // Initialize all pixels to 'off' |   clock.show(); // Initialize all pixels to 'off' | ||||||
| @@ -63,61 +81,8 @@ void setup() { | |||||||
|   delay(1000); |   delay(1000); | ||||||
|   colorWipe( clock.Color(0, 100, 150), 10); |   colorWipe( clock.Color(0, 100, 150), 10); | ||||||
|   colorWipe( clock.Color(0, 0, 0), 5); |   colorWipe( clock.Color(0, 0, 0), 5); | ||||||
|   displayNumber("99:99", clock.Color(150, 150, 150)); |   //displayNumber("99:99", clock.Color(150, 150, 150)); | ||||||
| } |   //countUp( clock.Color(0, 100, 150), 100); | ||||||
|  |  | ||||||
| void displayNumber(String string, uint32_t color) { |  | ||||||
|  |  | ||||||
|   for (int i = 0; i < 4; i++) { |  | ||||||
|     if (i < 2) fillNumber(i, string[i] - 48, color); |  | ||||||
|     else fillNumber(i, string[i + 1] - 48, color); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   if (string[2] == ':') colon(color); |  | ||||||
|   else nocolon(); |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void noclock() { |  | ||||||
|   for (int led = 0; led < clock.numPixels(); led++) { |  | ||||||
|     clock.setPixelColor(led, 0); |  | ||||||
|   } |  | ||||||
|   clock.show(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| void colon(uint32_t color) { |  | ||||||
|   for (int led = 0; led < SEPLEN; led++) { |  | ||||||
|     int currentLed = SEGLEN * 14 + led; |  | ||||||
|     clock.setPixelColor(currentLed, color); |  | ||||||
|   } |  | ||||||
|   clock.show(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void nocolon() { |  | ||||||
|   for (int led = 0; led < SEPLEN; led++) { |  | ||||||
|     int currentLed = SEGLEN * 14 + led; |  | ||||||
|     clock.setPixelColor(currentLed, 0); |  | ||||||
|   } |  | ||||||
|   clock.show(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void fillNumber(int position, int digit, uint32_t color) { |  | ||||||
|   int offset = 0; |  | ||||||
|   if (position > 3)return; |  | ||||||
|   if (position < 0)return; |  | ||||||
|   if (position > 1) offset = SEPLEN; |  | ||||||
|  |  | ||||||
|   for (int seg = 0; seg < 7; seg++) { |  | ||||||
|     for (int led = 0; led < SEGLEN; led++) { |  | ||||||
|       int currentLed = position * 5 * 7 + seg * 5 + led + offset; |  | ||||||
|       if (digits[digit][seg] == 1) { |  | ||||||
|         clock.setPixelColor(currentLed, color); |  | ||||||
|       } else { |  | ||||||
|         clock.setPixelColor(currentLed, clock.Color(0, 0, 0)); |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -125,52 +90,20 @@ void loop()  // Main loop | |||||||
| { | { | ||||||
|   // Check motion sensor |   // Check motion sensor | ||||||
|   // get data and time |   // get data and time | ||||||
|  |   displayOn = digitalRead(D6); | ||||||
|  |    | ||||||
|   if (millis() - oldTime > REFRESH) { |   if (millis() - oldTime > REFRESH) { | ||||||
|     uint32_t c = clock.Color(10, 10, 10); |     uint32_t c = clock.Color(10, 10, 10); | ||||||
|     getData(); |     getData(); | ||||||
|     displayNumber(hours + ":" + minutes, c); |     if(displayOn) displayNumber(hours + ":" + minutes, c); | ||||||
|     Serial.println(hours + ":" + minutes); |     Serial.println(hours + ":" + minutes); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   /* |  | ||||||
|     fillNumber(3, 0, c); |  | ||||||
|     clock.show(); |  | ||||||
|     delay(1000); |  | ||||||
|     fillNumber(0, 1, c); |  | ||||||
|     clock.show(); |  | ||||||
|     delay(1000); |  | ||||||
|     fillNumber(1, 2, c); |  | ||||||
|     clock.show(); |  | ||||||
|     delay(1000); |  | ||||||
|     fillNumber(2, 3, c); |  | ||||||
|     clock.show(); |  | ||||||
|     delay(1000); |  | ||||||
|     fillNumber(3, 4, c); |  | ||||||
|     clock.show(); |  | ||||||
|     delay(1000); |  | ||||||
|     fillNumber(0, 5, c); |  | ||||||
|     clock.show(); |  | ||||||
|     delay(1000); |  | ||||||
|     fillNumber(1, 6, c); |  | ||||||
|     clock.show(); |  | ||||||
|     delay(1000); |  | ||||||
|     fillNumber(2, 7, c); |  | ||||||
|     clock.show(); |  | ||||||
|     delay(1000); |  | ||||||
|     fillNumber(3, 8, c); |  | ||||||
|     clock.show(); |  | ||||||
|     delay(1000); |  | ||||||
|     fillNumber(0, 9, c); |  | ||||||
|     clock.show(); |  | ||||||
|     delay(1000); |  | ||||||
|   */ |  | ||||||
| } | } | ||||||
|  |  | ||||||
| void getData() { | void getData() { | ||||||
|   HTTPClient https; |   HTTPClient https; | ||||||
|  |   String URL = "https://" + String(HOST) + "/stations?stationId=" + String(STATION_UID); | ||||||
|   https.begin("https://testing.lbsfilm.at/stations?stationId=93", "1D:62:C5:06:5E:45:51:26:2F:56:A5:BD:E9:5E:F1:33:C8:6C:66:05"); //HTTPS |   https.begin( URL, "1D:62:C5:06:5E:45:51:26:2F:56:A5:BD:E9:5E:F1:33:C8:6C:66:05"); //HTTPS | ||||||
|   int httpCode = https.GET(); |   int httpCode = https.GET(); | ||||||
|  |  | ||||||
|   if (httpCode > 0) { |   if (httpCode > 0) { | ||||||
| @@ -208,7 +141,7 @@ void getData() { | |||||||
|       int offsetting = hours.toInt(); |       int offsetting = hours.toInt(); | ||||||
|       offsetting = offsetting + OFFSET; |       offsetting = offsetting + OFFSET; | ||||||
|       if (offsetting == 24) offsetting = 0; |       if (offsetting == 24) offsetting = 0; | ||||||
|       if(offsetting<10) hours = "0" + String(offsetting, DEC); |       if (offsetting < 10) hours = "0" + String(offsetting, DEC); | ||||||
|       else hours = String(offsetting, DEC); |       else hours = String(offsetting, DEC); | ||||||
|  |  | ||||||
|     } |     } | ||||||
| @@ -309,3 +242,78 @@ uint32_t Wheel(byte WheelPos) { | |||||||
|   return clock.Color(WheelPos * 3, 255 - WheelPos * 3, 0); |   return clock.Color(WheelPos * 3, 255 - WheelPos * 3, 0); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // ############### The LED Strip handling ################### | ||||||
|  |  | ||||||
|  | void displayNumber(String string, uint32_t color) { | ||||||
|  |  | ||||||
|  |   for (int i = 0; i < 4; i++) { | ||||||
|  |     if (i < 2) fillNumber(i, string[i] - 48, color); | ||||||
|  |     else fillNumber(i, string[i + 1] - 48, color); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (string[2] == ':') colon(color); | ||||||
|  |   else nocolon(); | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void noclock() { | ||||||
|  |   for (int led = 0; led < clock.numPixels(); led++) { | ||||||
|  |     clock.setPixelColor(led, 0); | ||||||
|  |   } | ||||||
|  |   clock.show(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void colon(uint32_t color) { | ||||||
|  |   for (int led = 0; led < SEPLEN; led++) { | ||||||
|  |     int currentLed = SEGLEN * 14 + led; | ||||||
|  |     clock.setPixelColor(currentLed, color); | ||||||
|  |   } | ||||||
|  |   clock.show(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void nocolon() { | ||||||
|  |   for (int led = 0; led < SEPLEN; led++) { | ||||||
|  |     int currentLed = SEGLEN * 14 + led; | ||||||
|  |     clock.setPixelColor(currentLed, 0); | ||||||
|  |   } | ||||||
|  |   clock.show(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void fillNumber(int position, int digit, uint32_t color) { | ||||||
|  |   int offset = 0; | ||||||
|  |   if (position > 3)return; | ||||||
|  |   if (position < 0)return; | ||||||
|  |   if (position > 1) offset = SEPLEN; | ||||||
|  |  | ||||||
|  |   for (int seg = 0; seg < 7; seg++) { | ||||||
|  |     for (int led = 0; led < SEGLEN; led++) { | ||||||
|  |       int currentLed = position * 5 * 7 + seg * 5 + led + offset; | ||||||
|  |       if (digits[digit][seg] == 1) { | ||||||
|  |         clock.setPixelColor(currentLed, color); | ||||||
|  |       } else { | ||||||
|  |         clock.setPixelColor(currentLed, clock.Color(0, 0, 0)); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void countUp(uint32_t color, int wait) { | ||||||
|  |   fillNumber(0, 8, clock.Color(0,0,0)); | ||||||
|  |    | ||||||
|  |   for (int num3 = 0; num3 < 10; num3++) { | ||||||
|  |     fillNumber(1, num3, color); | ||||||
|  |      | ||||||
|  |     for (int num2 = 0; num2 < 10; num2++) { | ||||||
|  |       fillNumber(2, num2, color); | ||||||
|  |        | ||||||
|  |       for (int num1 = 0; num1 < 10; num1++) { | ||||||
|  |         fillNumber(3, num1, color); | ||||||
|  |          | ||||||
|  |         clock.show(); | ||||||
|  |         delay(wait); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user