S_INFO NODE with OLED Display - Solved -
-
Hi, this is my code for writing Text to the oled display.
Controller is ioBroker and so far everything is working, but... I like to place multiple lines to the display using V_VAR1 - V_VAR5. How to use them?
And do i need a ACK Command?Thanks for you help, sorry this is my first "self made" node.
/** * The MySensors Arduino library handles the wireless radio link and protocol * between your home built sensors/actuators and HA controller of choice. * The sensors forms a self healing radio network with optional repeaters. Each * repeater and gateway builds a routing tables in EEPROM which keeps track of the * network topology allowing messages to be routed to nodes. * * Created by Henrik Ekblad <henrik.ekblad@mysensors.org> * Copyright (C) 2013-2015 Sensnology AB * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors * * Documentation: http://www.mysensors.org * Support Forum: http://forum.mysensors.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 2 as published by the Free Software Foundation. * ******************************* * * REVISION HISTORY * Version 1.1 - Thorsten Böttcher * * DESCRIPTION * Example sketch showing how to send messages to 0,96" OLED Display * * **************************** * * OLED ARDUINO * -----1234----- * | | 1 -> 3,3 V * | | 2 -> GND * | | 3 -> A5 SCL * | | 4 -> A4 SDA * -------------- * * OLED ASCII Library from https://github.com/greiman/SSD1306Ascii * */ // Enable debug prints to serial monitor #define MY_DEBUG // Enable and select radio type attached //#define MY_RADIO_NRF24 #define MY_RADIO_RFM69 #include <SPI.h> #include <MySensors.h> #define CHILD_ID 0 //oled display #include "SSD1306Ascii.h" #include "SSD1306AsciiAvrI2c.h" #define I2C_ADDRESS 0x3C SSD1306AsciiAvrI2c oled; // SketchInfo static const char SketchName[] ="Info Display"; static const char SketchVersion[] ="1.1"; int PosX = 0; int PosY = 0; int ClrScr = 0; int FontSize = 1; // loop static const uint64_t UPDATE_INTERVAL = 60000; MyMessage msgText (CHILD_ID, V_TEXT); // Text MyMessage msgVar1 (CHILD_ID, V_VAR1); // Cursor PosX MyMessage msgVar2 (CHILD_ID, V_VAR2); // Cursor PosY MyMessage msgVar3 (CHILD_ID, V_VAR3); // Clear Screen MyMessage msgVar4 (CHILD_ID, V_VAR4); // FontSize MyMessage msgVar5 (CHILD_ID, V_VAR5); // Not Used void setup() { Serial.println("starting..."); ShowInfo(); } void presentation() { // Send the sketch version information to the gateway and Controller sendSketchInfo(SketchName, SketchVersion); present(CHILD_ID, S_INFO); } void receive(const MyMessage &mymessage) { if (mymessage.type==V_TEXT) { DisplayMessage(mymessage.getString()); } if (mymessage.type==V_VAR1) { PosX = atoi(mymessage.getString()); } if (mymessage.type==V_VAR2) { PosY = atoi(mymessage.getString()); } if (mymessage.type==V_VAR3) { ClrScr=atoi(mymessage.getString()); if ( ClrScr > 0 ) oled.clear(); } if (mymessage.type==V_VAR4) { oled.set1X(); FontSize=atoi(mymessage.getString()); if ( FontSize > 1 ) oled.set2X(); } } void loop() { // Wait, but receive messages wait(UPDATE_INTERVAL); } void ShowInfo() { oled.begin(&Adafruit128x64, I2C_ADDRESS); oled.setFont(Arial14); oled.setFont(Arial14); oled.set1X(); oled.setCursor(20,1); oled.write("* MySensors 2.0 *"); oled.setCursor(30,3); oled.write(SketchName); oled.write(" "); oled.write(SketchVersion); oled.setCursor(30,5); oled.write("NodeID"); oled.write(" "); oled.print(getNodeId()); sleep(3000); oled.clear(); } void DisplayMessage(const char Message[]) { oled.setCursor(PosX,PosY); oled.clearToEOL (); oled.write(Message); }
-
@awi got some examples in Domoticz: https://forum.mysensors.org/topic/1957/lcd-clock-and-text-sensor-node-with-new-v_text I dont know how this works in ioBroker with v_var though.
-
Hi sundberg84, using 5 Nodes was my first idea. But i want to use V_VAR1...
But you solved me problem indirecty. I installed MYSController and...the code (updated above) is correct.
Looks like ioBroker is my problem.Thanks for your help Thorsten
-
Made small update .....X,Y Pos Fontsize...