Go Down

Topic: cannot display on lcd while using wifi (Read 66 times) previous topic - next topic

Alegzandrion

Jul 27, 2018, 08:02 am Last Edit: Jul 27, 2018, 08:03 am by Alegzandrion
Helo ! I am trying to display some information on a tft lcd display while also using a wifi shield. I am able to first display something, but afterwards if I am getting connected to a network with the wifi shield I am not able to display anything anymore. I don't know if there's any pin confilicts.

I am using the following shields :
wifi: https://learn.adafruit.com/adafruit-winc1500-wifi-shield-for-arduino?view=all
tft: https://learn.adafruit.com/1-8-tft-display

I am using them with arduino MEGA 2560 which has the SPI on pins 53-50 to which I connected the shields. (Gave the shields new SS on pin 47 and 49 because I want to use 53 for something else)


my code:
Code: [Select]

#include <SPI.h>
#include <WiFi101.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SD.h>
#include <SPI.h>  

#include "arduino_secrets.h"
///////please ente r your sensitive data in the Secret tab/arduino_secrets.h
char ssid[] = SECRET_SSID;        // your network SSID (name)
char pass[] = SECRET_PASS;    // your network password (use for WPA, or use as key for WEP)
int keyIndex = 0;                 // your network key Index number (needed only for WEP)

int status = WL_IDLE_STATUS;
WiFiServer server(80);
#define TFT_CS  49    // Chip select line for TFT display
#define TFT_RST  9  // Reset line for TFT (or see below...)
#define TFT_DC   8  // Data/command line for TFT
#define SD_CS    4  // Chip select line for SD card
#define TFT_SCLK 52   // set these to be whatever pins you like!
#define TFT_MOSI 51   // set these to be whatever pins you like!  
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

void setup() {  
  WiFi.setPins(47,7,5);
  Serial.begin(9600);      // initialize serial communication
  pinMode(9, OUTPUT);      // set the LED pin mode
  pinMode(49, OUTPUT);
  pinMode(47, OUTPUT);

  

 digitalWrite(47, LOW);
digitalWrite(49, HIGH);    
  
  delay(1000);            
  tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab
  //Serial.println("OK!");
  tft.fillScreen(ST7735_BLACK);
  tft.setTextSize(2);
  tft.setTextColor(ST7735_WHITE);
  tft.setCursor(0, 0);
  tft.print("RENAULT");
  
  digitalWrite(49, LOW);      
  digitalWrite(47, HIGH);      

  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    while (true);       // don't continue
  }
 
  // attempt to connect to WiFi network:
  while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to Network named: ");
  
    
    Serial.println(ssid);                   // print the network name (SSID);

    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
    status = WiFi.begin(ssid, pass);
    // wait 10 seconds for connection:
    delay(10000);
  }
  server.begin();                           // start the web server on port 80
  printWiFiStatus();                        // you're connected now, so print out the status
}


void loop() {
  html();
  printt();
}

void html(){
  WiFiClient client = server.available();   // listen for incoming clients

  if (client) {                             // if you get a client,
    Serial.println("new client");           // print a message out the serial port
    String currentLine = "";                // make a String to hold incoming data from the client
    while (client.connected()) {            // loop while the client's connected
      if (client.available()) {             // if there's bytes to read from the client,
        char c = client.read();             // read a byte, then
        Serial.write(c);                    // print it out the serial monitor
        if (c == '\n') {                    // if the byte is a newline character

          // if the current line is blank, you got two newline characters in a row.
          // that's the end of the client HTTP request, so send a response:
          if (currentLine.length() == 0) {
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
            // and a content-type so the client knows what's coming, then a blank line:
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println();

            // the content of the HTTP response follows the header:
            client.print("RENAULT TECHNOLOGIE ROUMANIE<br>");
            client.print("student: Ungureanu Alexandru<br>");
            client.print("guru: Georgescu Dragos<br>");
            client.print("Click <a href=\"/H\">here</a> turn the LED on pin 9 on<br>");
            client.print("Click <a href=\"/L\">here</a> turn the LED on pin 9 off<br>");

            // The HTTP response ends with another blank line:
            client.println();
            // break out of the while loop:
            break;
          }
          else {      // if you got a newline, then clear currentLine:
            currentLine = "";
          }
        }
        else if (c != '\r') {    // if you got anything else but a carriage return character,
          currentLine += c;      // add it to the end of the currentLine
        }

        // Check to see if the client request was "GET /H" or "GET /L":
        if (currentLine.endsWith("GET /H")) {
          digitalWrite(9, HIGH);               // GET /H turns the LED on
        }
        if (currentLine.endsWith("GET /L")) {
          digitalWrite(9, LOW);                // GET /L turns the LED off
        }
      }
    }
    // close the connection:
    client.stop();
    Serial.println("client disonnected");
  }
    digitalWrite(13, HIGH);       // sets the digital pin 13 on
  delay(1000);
}

void printWiFiStatus() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
  // print where to go in a browser:
  Serial.print("To see this page in action, open a browser to http://");
  Serial.println(ip);
}

void printt(){
digitalWrite(47, LOW);
digitalWrite(49, HIGH);
tft.setTextSize(2);
tft.setTextColor(ST7735_WHITE);
tft.setCursor(0, 10);
tft.print("diicot");
Serial.println(ssid);                   // print the network name (SSID);
digitalWrite(49, LOW);
digitalWrite(47, HIGH);
}



I basically added to the wifi web client example of the wifi shield the lcd part. I had to define some pins because I am not using arduino uno, but arduino mega.

My code displays on the tft shield the first part of the code(the one from setup), afterwards it connects to my wifi hotspot, but it doesn't continue displaying the stuff from the <printt> function.

Go Up