วันจันทร์ที่ 8 พฤษภาคม พ.ศ. 2560

จิกซอในจินตนาการ ตอนที่ 3 code รับส่งข้อมูล ระหว่าง APP และ Dot Matrix

#include 
#include 

#define SERVER_PORT 4000            //ค่า port ที่ต้องการเชื่อมต่อ
IPAddress server_ip = {192,168,43,1};       //ค่า ip ของ Server (อย่าลืมแก้เป็น IP ของตัวเอง)
 
const char* ssid = "chicky";         //ค่าของ SSID (อย่าลืมแก้เป็น ชื่อ SSID ของตัวเอง)
const char* password = "chicky#69"; //ค่าของ SSID (อย่าลืมแก้เป็น password ของตัวเอง)
 
WiFiServer server(SERVER_PORT); //สร้าง object server และกำหนด port ที่ต้องการเชื่อมต่อกับ server
WiFiClient client;              //สร้าง object client
Ticker second;

int ben = 0 , i = 0, j = 136, n = 136, fast;
int  number = 0, half_min = 0;
uint8_t mix_ben = 0, c =0;
const int latchPin = 15;//Pin connected to ST_CP of 74HC595
const int clockPin = 14;//Pin connected to SH_CP of 74HC595 
const int dataPin = 13; //Pin connected to DS of 74HC595  
int slot[144] ={0x08, 0x39, 0x5E, 0x7E, 0x7E, 0x3E, 0x1D, 0x38, /*" ",0*/
                0x08, 0x38, 0x5E, 0x7F, 0x7F, 0x3E, 0x0C, 0x0E, /*"ไก่",1*/
                0x00, 0x44, 0xCD, 0xFF, 0xFF, 0xCD, 0x44, 0x00, /*"1",2*/
                0x00, 0x89, 0x9B, 0xFB, 0xFB, 0x9B, 0x89, 0x00, /*"2",3*/
                0x00, 0x26, 0x6F, 0xE7, 0xE7, 0x6F, 0x26, 0x00, /*"3",4*/
                0x00, 0x48, 0xDC, 0xCF, 0xCF, 0xDC, 0x48, 0x00, /*"4",5*/
                0x00, 0x90, 0xB8, 0xBE, 0xBE, 0xB8, 0x90, 0x00, /*"5",6*/
                0x00, 0x40, 0xE0, 0xF8, 0xF8, 0xE0, 0x40, 0x00, /*"6",7*/
                0x00, 0x00, 0x80, 0xE0, 0xE0, 0x80, 0x00, 0x00, /*"จรวดขึ้น",8*/
                0x00, 0x00, 0x00, 0x6C, 0x92, 0x92, 0x6C, 0x00, /*"8",9*/
                0x00, 0x00, 0x00, 0x4C, 0x92, 0x92, 0x7C, 0x00, /*"9",10*/
                0x00, 0x00, 0x00, 0xFC, 0x22, 0x22, 0xFC, 0x00, /*"A",11*/
                0x00, 0x00, 0x00, 0xFE, 0x92, 0x92, 0x6C, 0x00, /*"B",12*/
                0x00, 0x00, 0x00, 0x7C, 0x82, 0x82, 0x44, 0x00, /*"C",13*/
                0x00, 0x00, 0x00, 0xFE, 0x82, 0x82, 0x7C, 0x00, /*"D",14*/
                0x00, 0x00, 0x00, 0xFE, 0x92, 0x92, 0x82, 0x00, /*"E",15*/
                0x00, 0x00, 0xFE, 0x12, 0x12, 0x02, 0x00, 0x00, /*"F",16*/
                              /*"add slot",17*/}; 
void setup() 
{   
    Serial.begin(115200);       //เปิดใช้ Serial
    WiFi.begin(ssid, password); //เชื่อมต่อกับ AP
   
     while (WiFi.status() != WL_CONNECTED)  //รอการเชื่อมต่อ
    {
            delay(500);
            Serial.print(".");
    }
//    IPAddress local_ip = {192,168,1,144};   //ตั้งค่าล็อค IP นั่นตลอด
//    IPAddress gateway={192,168,1,1};    //ตั้งค่า IP Gateway
//    IPAddress subnet={255,255,255,0};   //ตั้งค่า Subnet
//    WiFi.config(local_ip,gateway,subnet);   //setค่าไปยังโมดูล
    pinMode(latchPin, OUTPUT);
    pinMode(clockPin, OUTPUT);
    pinMode(dataPin, OUTPUT); 
    Serial.println("");
    Serial.println("WiFi connected");  
    Serial.println("IP address: "); 
    Serial.println(WiFi.localIP()); //แสดงหมายเลข IP
    check_server();                 // รอการเชื่องต่อ server
    ESP.wdtDisable();  //ปิด watch dog Timer

}
void check_server(){
    Serial.println("Connect TCP Server");
    while (!client.connect(server_ip,SERVER_PORT)) //เชื่อมต่อกับ Server
    {
            Serial.print(".");
            delay(100);
    }
     
     
    Serial.println("Success"); 
     
}

void delay_min(int numbor){   //  600/ min
  if(numbor == 600){
    half_min++;
    number = 0;
    Serial.println(half_min);
  }
}

void add_slot(int x){    // เพิ่มข้อมูลลงใน array เ
    slot[j] = x;
    j++;  
}

void dot_matrix()
{
  for (int t = 0; t = 1)  &&(i < 8)){
                  c = mix_ben << 1;         // mix_ben ซิบ bit ไปทางขวา เช่น ได้ 1 ซิบได้ 10
              }
              else if(i == 8){
                  int b = 0;
                  b = c | ben;
                  add_slot(b);              // ถ้า ครบ 8 Bit ให้เพิ่มใน Array
                  i = 0;                    // reset เพื่อ รอรับครั้งต่อไป
                  uint8_t mix_ben = 0, c =0;
                  
              }

            if(j==144){
              while( !client.available() && client.connected()){  // ถ้าไม่มีการ ส่งค่ามาให้ Client และ เชื่องต่อ server อยู่ 
                n = 136;
                fast = 500;
                dot_matrix();              // ถ้า เพิ่มค่าใน array จนครบ 64 bit ให้แสดงรูปที่เข้ามา
                number++;
                Serial.println(number);
                delay_min(number);         // จับเวลา 2 min
                if(half_min == 2){
                    half_min = 0;
                    break; 
                 }
              }
              j = 136;
            }
            else{                                  //  แสดงรูปเพิ่มฐานหลังหมด เวลา
              while( !client.available() && client.connected()){
                 for(int term = 0; term <=8; term+=8){
                      fast  = 1000;
                      n = term;
                      dot_matrix();
                 }
               }
            }
    }

    
    while( !client.available() && client.connected()){         // แสดงรูปพื้นฐาน เมื่อ เชื่อมต่อ server  และลอรับค่า
       for(int term = 0; term <=8; term+=8){
            fast = 1000;
            n = term;
            dot_matrix();
         }
    }

    if(!client.connected()){
      check_server();             
    }
    client.println("Hello2");     //ส่งค่าที่ได้รับกลับไปยัง Server
    delay(1000);
}

ไม่มีความคิดเห็น:

แสดงความคิดเห็น