#include <ESP8266WiFi.h> extern "C" { #include "user_interface.h" } #define LED 5 void setup() { Serial.begin(115200); pinMode(LED, OUTPUT); WiFi.begin("FreifunkWees01.2 (http://ffw)", ""); while (WiFi.status() != WL_CONNECTED) { delay(100); Serial.print("."); } } void loop() { wifi_set_sleep_type(LIGHT_SLEEP_T); // light sleep delay(10000); // für 10 Sekunden digitalWrite(LED, HIGH); // LED an delay(1000); digitalWrite(LED, LOW); // LED aus delay(1000); } |
#include <Wire.h> #define DS3231_ADR 0x68 // I2C-Adresse der RTC #define AT24C32_ADR 0x57 // I2C-Adresse des EEPROM (bei A0-A2 offen == Default) struct RTCdata { unsigned long year : 6; // funktioniert bis 2063, danach ;-) statt 2000 einfach 2064 addieren unsigned long month : 4; unsigned long day : 5; unsigned long hour : 5; unsigned long minute : 6; unsigned long second : 6; }; RTCdata getRTC(void) { RTCdata t; Wire.beginTransmission(DS3231_ADR); Wire.write(0); // Register(0) (Seconds) Wire.endTransmission(); Wire.requestFrom(DS3231_ADR, 7); // 7 Byte holen t.second=bcd2dec(Wire.read())&0x3F; // Seconds t.minute=bcd2dec(Wire.read())&0x3F; // Minutes t.hour =bcd2dec(Wire.read())&0x1F; // Hours Wire.read(); // Day weglesen t.day =bcd2dec(Wire.read())&0x1F; // Date t.month =bcd2dec(Wire.read())&0x0F; // Month t.year =bcd2dec(Wire.read())&0x3F; // Year return(t); } void printRTC(RTCdata t) { Serial.print(2000+t.year); Serial.print("."); Serial.print(t.month); Serial.print("."); Serial.print(t.day); Serial.print(" "); Serial.print(t.hour, DEC); Serial.print(":"); Serial.print(t.minute, DEC); Serial.print(":"); Serial.print(t.second, DEC); } void setup() { Serial.begin(115200); Wire.begin(0, 2); // SDA, SCL } void loop() { RTCdata t; t=getRTC(); printRTC(t); Serial.println(); delay(1000); } byte dec2bcd(byte val) { return((val/10*16)+(val%10)); } byte bcd2dec(byte val) { return((val/16*10)+(val%16)); } |
warning: espcomm_sync failed error: espcomm_open failed error: espcomm_upload_mem failed error: espcomm_upload_mem failed |
void setup() { Serial.begin(115200); } void loop() { Serial.println(analogRead(A0)); delay(1000); } |
#include <OneWire.h> #define MAX_SENSOR_COUNT 2 // maximale Anzahl der Sensor-Paare #define DS18B20_DATA_PIN 13 // OneWire-Data-Pin byte ROMcode_g[MAX_SENSOR_COUNT][8]; // ROM-Codes der DS18B20 byte sensor_count_g; // die Anzahl der Sensor-Paare OneWire ds18b20(DS18B20_DATA_PIN); char discoverOneWireDevices(void) { sensor_count_g=0; while(ds18b20.search(ROMcode_g[sensor_count_g])) { if(OneWire::crc8(ROMcode_g[sensor_count_g], 7)!=ROMcode_g[sensor_count_g][7]) { return(0); } sensor_count_g++; if(sensor_count_g>=MAX_SENSOR_COUNT) { // mehr als zwei Sensor-Paare sind nicht vorgesehen break; } } ds18b20.reset_search(); return(1); } int readDS18B20_CRC(byte ROMcodeIdx) { static byte scratchpad[9]; for(int i=0; i<3; i++) { // maximal 3 Versuche, einen Wert mit korrekter CRC zu lesen ds18b20.reset(); ds18b20.select(ROMcode_g[ROMcodeIdx]); ds18b20.write(0x44); // This command initiates a single temperature conversion //delay(750); ds18b20.reset(); ds18b20.select(ROMcode_g[ROMcodeIdx]); ds18b20.write(0xBE); // Read Scratchpad for(int j=0; j<9; j++) { scratchpad[j]=ds18b20.read(); } if(scratchpad[5]==0xFF && scratchpad[7]==0x10 && OneWire::crc8(scratchpad, 8)==scratchpad[8]) { // Was für ein beschissener CRC. Wenn man die Verbindung zur DQ-Leitung zieht, kommt 9x 0x00 zurück. // Und 9x 0x00 führt zu OneWire::crc8()==0 - passt also zu scratchpad[8] und ist damit // in diesem Fall vollkommen wertlos. // Daher werden zusätzlich die Byte 5 und 7 geprüft, die laut Doku "Reserved" und ab Werk // mit den Werten 0xFF bzw. 0x10 vorbelegt sind. // Für Byte 0 und 1 gilt: // BIT 15 14 1 1 11 10 09 08 07 06 05 04 03 02 01 00 // S S S S S 2^6 2^5 2^4 2^3 2^2 2^1 2^0 2^-1 2^-2 2^-3 2^-4 return((scratchpad[1]<<8)|scratchpad[0]); } } return(0x8FFF); // Fehlerkennung (0x8FFF kann nicht als Temperatur-Wert vorkommen) } void setup() { Serial.begin(115200); discoverOneWireDevices(); } void loop() { Serial.println(readDS18B20_CRC(0)/16.0); delay(1000); } |
long millis_base; long sec_base; void setup() { RTCdata t; millis_base=millis(); Serial.begin(115200); Wire.begin(2, 0); // SDA, SCL t=getRTC(); sec_base=t.second+t.minute*60+t.hour*60*60; } void loop() { static long sec, mil; static RTCdata t; t=getRTC(); printRTC(t); Serial.print(" "); sec=t.second+t.minute*60+t.hour*60*60; Serial.print(sec-sec_base); Serial.print(" "); mil=millis()-millis_base; Serial.print(mil/1000); Serial.print("."); Serial.print(mil%1000); Serial.println(); delay(1000); } |
2017.1.29 12:5:56 0
0.3 2017.1.29 12:5:57 1 1.4 2017.1.29 12:5:58 2 2.6 2017.1.29 12:5:59 3 3.7 2017.1.29 12:6:0 4 4.8 2017.1.29 12:6:1 5 5.9 2017.1.29 12:6:2 6 6.10 2017.1.29 12:6:3 7 7.11 2017.1.29 12:6:4 8 8.12 2017.1.29 12:6:5 9 9.14 2017.1.29 12:6:6 10 10.15 [......] 2017.1.29 12:16:56 660 660.909 2017.1.29 12:16:57 661 661.910 2017.1.29 12:16:59 663 662.911 2017.1.29 12:17:0 664 663.913 2017.1.29 12:17:1 665 664.914 2017.1.29 12:17:2 666 665.915 2017.1.29 12:17:3 667 666.917 2017.1.29 12:17:4 668 667.918 [......] 2017.1.29 12:18:1 725 724.998 2017.1.29 12:18:2 726 725.999 2017.1.29 12:18:3 727 727.0 2017.1.29 12:18:4 728 728.2 [......] 2017.1.29 13:5:56 3600 3599.960 2017.1.29 13:5:57 3601 3600.962 2017.1.29 13:5:58 3602 3601.963 2017.1.29 13:5:59 3603 3602.964 [......] 2017.1.29 13:16:10 4214 4214.809 2017.1.29 13:16:11 4215 4215.810 2017.1.29 13:16:12 4216 4216.812 |
RTCdata getRTCprecise(void) { static RTCdata t; int sec; t=getRTC(); sec=t.second; while(t.second==sec) { delay(1); t=getRTC(); } return(t); } long millis_base; long sec_base; void setup() { RTCdata t; Serial.begin(115200); Wire.begin(2, 0); // SDA, SCL t=getRTCprecise(); millis_base=millis(); sec_base=t.second+t.minute*60+t.hour*60*60; } void loop() { static long sec, mil; static RTCdata t; t=getRTCprecise(); mil=millis()-millis_base; printRTC(t); Serial.print(" "); sec=t.second+t.minute*60+t.hour*60*60; Serial.print(sec-sec_base); Serial.print(" "); Serial.print(mil/1000); Serial.print("."); Serial.print(mil%1000); Serial.println(); delay(900); } |
2017.1.29 13:19:18 1
1.0 2017.1.29 13:19:19 2 2.0 2017.1.29 13:19:20 3 3.0 2017.1.29 13:19:21 4 3.999 2017.1.29 13:19:22 5 5.0 [......] 2017.1.29 13:29:18 601 600.994 // nach 10 Minuten 2017.1.29 13:29:19 602 601.995 2017.1.29 13:29:20 603 602.994 [......] 2017.1.29 14:19:18 3601 3600.968 // nach 60 Minuten 2017.1.29 14:19:19 3602 3601.968 2017.1.29 14:19:20 3603 3602.968 2017.1.29 14:19:21 3604 3603.969 2017.1.29 14:19:22 3605 3604.967 [......] 2017.1.29 14:49:18 5401 5400.952 // nach 90 Minuten 2017.1.29 14:49:19 5402 5401.952 2017.1.29 14:49:20 5403 5402.952 2017.1.29 14:49:21 5404 5403.952 2017.1.29 14:49:22 5405 5404.951 |