Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <OneWire.h>
- #include <DallasTemperature.h>
- #include <SoftwareSerial.h>
- #define ONE_WIRE_BUS 2
- OneWire oneWire(ONE_WIRE_BUS);
- DallasTemperature sensors(&oneWire);
- SoftwareSerial mySerial(10, 11); // RX, TX
- unsigned long t1, dt;
- int stato = 0;
- struct mydata {
- char cmd;
- int count;
- float temp;
- char str[20];
- int st_size ;
- };
- mydata dato = {'x', 0, 18.0f, "hello world!",0};
- void setup() {
- pinMode(13, OUTPUT);
- pinMode(12, OUTPUT);
- Serial.println("trasmettitore");
- Serial.begin(9600);
- mySerial.begin(9600);
- digitalWrite(13, LOW);
- sensors.begin();
- }
- void loop() {
- Serial.print(".");
- sensors.requestTemperatures();
- dato.temp = sensors.getTempCByIndex(0);
- //Serial.println (sensors.getTempCByIndex(0));
- switch (stato) {
- case 0:
- tx();
- break;
- case 1:
- ack();
- break;
- case 2:
- timeout();
- break;
- }
- }
- void tx() {
- dato.st_size = sizeof(struct mydata);
- Serial.print("millis "); Serial.println(millis()/100 );
- Serial.println("TX");
- mySerial.write((byte)'\n');
- mySerial.write((const uint8_t *)&dato, sizeof(struct mydata));
- dato.count++;
- digitalWrite(13, HIGH);
- stato = 1;
- t1 = millis();
- }
- bool FIRST = true;
- void ack() {
- if (FIRST) {
- Serial.println("RX...");
- FIRST = false;
- }
- if (mySerial.available()) {
- byte c = mySerial.read();
- if (c == 'k') {
- Serial.println("ACK");
- mySerial.flush();
- digitalWrite(13, LOW);
- delay(500);
- stato = 0;
- }
- }
- dt = millis() - t1;
- if (dt > 5000) {
- //timeout!
- Serial.println("timeout");
- stato = 2;
- }
- }
- void timeout() {
- digitalWrite(13, LOW);
- digitalWrite(12, HIGH);
- stato = 0;
- delay(3000);
- digitalWrite(12, LOW);
- }
- //sensors.requestTemperatures();
- //dato.temp = sensors.getTempCByIndex(0);
- //Serial.println (sensors.getTempCByIndex(0));
- //mySerial.write((const uint8_t *)&dato, sizeof(struct mydata));
- //mySerial.write((byte)'\n');
- //dato.count++;
- //delay(1000);
- //}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement