เขียน Code จอ OLED แล้วเชื่อมต่อไม่ได้
ตอนทดลองเขียน Code เล็กๆ เทสตัวจอ OLED ก็ได้งานได้ปกติ
แต่ผมเอามารวมกับตัว Code ของโปรแกรมที่ผมเขียนทั้งหมด มันเชื่อมต่อไม่ได้ครับ
//ตัวที่ฝาย
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <LoRa.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 OLED(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);//ขาA4 -> SDA ขาA5 -> SCL
int relay1 = 3;
int relay2 = 4;
int pin1 = 5;
int pin2 = 6;
int pin3 = 7;
int pin4 = 8;
int data = 0;
String text;
String text1 = "ฝายปิด 0";
String text2 = "ฝายเปิด 45";
String text3 = "ฝายเปิด 90";
String text4 = "ฝายปิด 45";
void setup(){
Serial.begin(9600);
if (!OLED.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // สั่งให้จอ OLED เริ่มทำงานที่ Address 0x3C
Serial.println("SSD1306 allocation failed");
} else {
Serial.println("ArdinoAll OLED Start Work !!!");
}
while (!Serial);
Serial.println("LoRa-sender/received");
pinMode(relay1,OUTPUT);
pinMode(relay2,OUTPUT);
pinMode(pin1,INPUT);
pinMode(pin2,INPUT);
pinMode(pin3,INPUT);
pinMode(pin4,INPUT);
if (!LoRa.begin(433E6)) {
Serial.println("Starting LoRa failed!");
while(1);
}
}
void UP(){
digitalWrite(relay1,HIGH);
digitalWrite(relay2,LOW);
}
void DOWN(){
digitalWrite(relay1,LOW);
digitalWrite(relay2,HIGH);
}
void STOP(){
digitalWrite(relay1,HIGH);
digitalWrite(relay2,HIGH);
}
void LoRaDOWN0(){
LoRa.beginPacket();
LoRa.print(text1);
LoRa.endPacket();
Serial.print("Send '");
Serial.print(text1);
Serial.println("'");
}
void LoRaUP45(){
LoRa.beginPacket();
LoRa.print(text2);
LoRa.endPacket();
Serial.print("Send '");
Serial.print(text2);
Serial.println("'");
}
void LoRaUP90(){
LoRa.beginPacket();
LoRa.print(text3);
LoRa.endPacket();
Serial.print("Send '");
Serial.print(text3);
Serial.println("'");
}
void LoRaDOWN45(){
LoRa.beginPacket();
LoRa.print(text4);
LoRa.endPacket();
Serial.print("Send '");
Serial.print(text4);
Serial.println("'");
}
void SENDUP45(){
OLED.clearDisplay();
OLED.setTextColor(WHITE, BLACK);
OLED.setCursor(0, 0);
OLED.setTextSize(2);
OLED.println("LoRa Sender");
OLED.setTextSize(2);
OLED.print("sending...");
OLED.setCursor(0,33);
OLED.setTextSize(1);
OLED.println("check dam open 45!!!");
OLED.setTextSize(2);
OLED.print("sent complete");
OLED.display();
}
void SENDUP90(){
OLED.clearDisplay();
OLED.setTextColor(WHITE, BLACK);
OLED.setCursor(0, 0);
OLED.setTextSize(2);
OLED.println("LoRa Sender");
OLED.setTextSize(2);
OLED.print("sending...");
OLED.setCursor(0,33);
OLED.setTextSize(1);
OLED.println("check dam open 90!!!");
OLED.setTextSize(2);
OLED.print("sent complete");
OLED.display();
}
void SENDDOWN0(){
OLED.clearDisplay();
OLED.setTextColor(WHITE, BLACK);
OLED.setCursor(0, 0);
OLED.setTextSize(2);
OLED.println("LoRa Sender");
OLED.setTextSize(2);
OLED.print("sending...");
OLED.setCursor(0,33);
OLED.setTextSize(1);
OLED.println("check dam close 0!!!");
OLED.setTextSize(2);
OLED.print("sent complete");
OLED.display();
}
void SENDDOWN45(){
OLED.clearDisplay();
OLED.setTextColor(WHITE, BLACK);
OLED.setCursor(0, 0);
OLED.setTextSize(2);
OLED.println("LoRa Sender");
OLED.setTextSize(2);
OLED.print("sending...");
OLED.setCursor(0,33);
OLED.setTextSize(1);
OLED.println("check dam close 45!!!");
OLED.setTextSize(2);
OLED.print("sent complete");
OLED.display();
}
void loop(){
int A = digitalRead(pin1);
int B = digitalRead(pin2);
int C = digitalRead(pin3);
int D = digitalRead(pin4);
// ส่วนการส่งข้อมูล
if (((A==LOW)&&(B==LOW)&&(C==LOW)&&(D==LOW))&&(data==0)){
//Serial.print("\t");
//Serial.print("ไม่มีน้ำ");
// Serial.println();
//STOP();
//LoRaDOWN0();
data = 0;
OLED.clearDisplay();
OLED.display();
}
if (((A==HIGH)&&(B==LOW)&&(C==LOW)&&(D==LOW))&&(data==0)){
Serial.print("\t");
Serial.print("ขึ้น 45");
Serial.println();
UP();
LoRaUP45();
SENDUP45();
data = 0;
}
if (((A==HIGH)&&(B==HIGH)&&(C==HIGH)&&(D==LOW))&&(data==0)){
Serial.print("\t");
Serial.print("ขึ้น 90");
Serial.println();
UP();
LoRaUP90();
SENDUP90();
data = 1;
}
if (((A==HIGH)&&(B==HIGH)&&(C==HIGH)&&(D==HIGH))&&(data==1)){
Serial.print("\t");
Serial.print("ลงที่ 0");
Serial.println();
DOWN();
LoRaDOWN0();
SENDDOWN0();
data =0;
}
if (((A==HIGH)&&(B==HIGH)&&(C==HIGH)&&(D==LOW))&&(data==0)){
Serial.print("\t");
Serial.print("ขึ้น 90");
Serial.println();
UP();
LoRaUP90();
SENDUP90();
data = 1;
}
if (((A==HIGH)&&(B==HIGH)&&(C==LOW)&&(D==LOW))&&(data==1)){
Serial.print("\t");
Serial.print("ลงที่ 45");
Serial.println();
DOWN();
LoRaDOWN45();
SENDDOWN45();
data = 1;
}
if (((A==LOW)&&(B==LOW)&&(C==LOW)&&(D==LOW))&&(data==1)){
Serial.print("\t");
Serial.print("ลงที่ 0");
Serial.println();
DOWN();
LoRaDOWN0();
SENDDOWN0();
data = 0;
//delay(5000);
}
//ส่วนการรับข้อมูล
if (LoRa.parsePacket()) {
String text = LoRa.readString();
Serial.print("Receiver '");
Serial.print(text);
Serial.print("' RSSI is ");
Serial.println(LoRa.packetRssi());
if (text=="เปิดฝาย 45"){
UP();
}
}
if (LoRa.parsePacket()) {
String text = LoRa.readString();
Serial.print("Receiver '");
Serial.print(text);
Serial.print("' RSSI is ");
Serial.println(LoRa.packetRssi());
if (text=="เปิดฝาย 90"){
UP();
}
}
if (LoRa.parsePacket()) {
String text = LoRa.readString();
Serial.print("Receiver '");
Serial.print(text);
Serial.print("' RSSI is ");
Serial.println(LoRa.packetRssi());
if (text=="ปิดฝาย 45"){
DOWN();
}
}
if (LoRa.parsePacket()) {
String text = LoRa.readString();
Serial.print("Receiver '");
Serial.print(text);
Serial.print("' RSSI is ");
Serial.println(LoRa.packetRssi());
if (text=="ปิดฝาย 0"){
DOWN();
delay(5000);
}
}
if (LoRa.parsePacket()) {
String text = LoRa.readString();
Serial.print("Receiver '");
Serial.print(text);
Serial.print("' RSSI is ");
Serial.println(LoRa.packetRssi());
if (text=="หยุด"){
STOP();
}
}
}