// 8-channel relay on arduino serial control with led blink with DS18B20 // v0.1 under dwtwl // ch1 = pin2; ch2 = pin3; ch3 = pin4; ch4 = pin5; // ch5 = pin6; ch6 = pin7; ch7 = pin8; ch8 = pin9; led = pin13; // send: switch on = 21X; switch off = 22X; get status = 23X; // codes: in = init; eX = enabled; dX = disabled; tX = power on; fX = off; #include #include // DS18B20 temp sensor #include #define ONE_WIRE_BUS 10 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); Thread ledThread = Thread(); int incomingNumber = 0; void setup() { Serial.begin(9600); pinMode(13, OUTPUT); for(int i=2;i<10;i++){ pinMode(i, OUTPUT); digitalWrite(i, HIGH); } Serial.println("in"); ledThread.onRun(ledBlink); ledThread.setInterval(1000); sensors.begin(); } void ledBlink() { static bool ledStatus = false; ledStatus = !ledStatus; digitalWrite(13, ledStatus); } void loop() { // Thread init: if (ledThread.shouldRun()) ledThread.run(); if (Serial.available() > 0) { int incomingByte = Serial.read()-48; if (incomingByte>=0 && incomingByte<=9) { incomingNumber=incomingNumber*10+incomingByte; } else { if (incomingNumber>=210 && incomingNumber<=219) { delay(500); int currentPin = incomingNumber - 209; char currentChannel[] = "e0"; currentChannel[1] = '0' + (currentPin - 1); digitalWrite(currentPin, LOW); Serial.println(currentChannel); delay(500); } if (incomingNumber>=220 && incomingNumber<=229) { delay(500); int currentPin = incomingNumber - 219; char currentChannel[] = "d0"; currentChannel[1] = '0' + (currentPin - 1); digitalWrite(currentPin, HIGH); Serial.println(currentChannel); delay(500); } if (incomingNumber>=230 && incomingNumber<=239) { delay(500); int currentPin = incomingNumber - 229; if (digitalRead(currentPin)==HIGH) { char currentChannel[] = "f0"; currentChannel[1] = '0' + (currentPin - 1); Serial.println(currentChannel); } else { char currentChannel[] = "t0"; currentChannel[1] = '0' + (currentPin - 1); Serial.println(currentChannel); } delay(500); } if (incomingNumber == 99) { int sensorData = readDS18B20(); String temperature = "t"; String stringToPrint = temperature + sensorData; Serial.println(stringToPrint); } incomingNumber = 0; } } } // DS18B20 Temperature float readDS18B20() { sensors.requestTemperatures(); // Send the command to get temperature readings return sensors.getTempCByIndex(0); }