1

I am trying to write to the adafruit display using Arduino MKR1500 when it is connected to the internet. The issue I am facing is when I add the code to connect to the cloud, the display stops working. If I removed that piece of code, the display outputs correctly. As of now I am just printing "hello world" on the screen. Below is the code without the cloud connection:

/**************************************************************************
  This is a library for several Adafruit displays based on ST77* drivers.

Works with the Adafruit 1.8" TFT Breakout w/SD card ----> http://www.adafruit.com/products/358 The 1.8" TFT shield ----> https://www.adafruit.com/product/802 The 1.44" TFT breakout ----> https://www.adafruit.com/product/2088 The 1.14" TFT breakout ----> https://www.adafruit.com/product/4383 The 1.3" TFT breakout ----> https://www.adafruit.com/product/4313 The 1.54" TFT breakout ----> https://www.adafruit.com/product/3787 The 2.0" TFT breakout ----> https://www.adafruit.com/product/4311 as well as Adafruit raw 1.8" TFT display ----> http://www.adafruit.com/products/618

Check out the links above for our tutorials and wiring diagrams. These displays use SPI to communicate, 4 or 5 pins are required to interface (RST is optional).

Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit!

Written by Limor Fried/Ladyada for Adafruit Industries. MIT license, all text above must be included in any redistribution **************************************************************************/ #include <Adafruit_Fingerprint.h> #include <Adafruit_GFX.h> // Core graphics library #include <Adafruit_ST7735.h> // Hardware-specific library for ST7735 #include <Adafruit_ST7789.h> // Hardware-specific library for ST7789 #include <SPI.h> #include <Bounce2.h> // https://github.com/thomasfredericks/Bounce2 //#include <EEPROM.h> #include <FlashStorage.h>

#if defined(ARDUINO_FEATHER_ESP32) // Feather Huzzah32 #define TFT_CS 14 #define TFT_RST 15 #define TFT_DC 32

#elif defined(ESP8266) #define TFT_CS 4 #define TFT_RST 16 #define TFT_DC 5

#else // For the breakout board, you can use any 2 or 3 pins. // These pins will also work for the 1.8" TFT shield. #define TFT_CS 1 // D v25 changes to use pin 1 for CS in MKR1500 #define TFT_RST -1 // Or set to -1 and connect to Arduino RESET pin // D v25 changes to use built in reset pinout in MKR1500 #define TFT_DC 2 // D v25 changes to use pin 2 for CS in MKR1500 #endif

//D v15 for audrino to connect to fingerprint sensor //D v2 #if (defined(AVR) || defined(ESP8266)) && !defined(AVR_ATmega2560) // For UNO and others without hardware serial, we must use software serial... // pin #2 is IN from sensor (GREEN wire) // pin #3 is OUT from arduino (WHITE wire) // Set up the serial port to use softwareserial.. SoftwareSerial mySerial(2, 4);

#else // On Leonardo/M0/etc, others with hardware serial, use hardware serial! // #0 is green wire, #1 is white #define mySerial Serial1

#endif

// OPTION 1 (recommended) is to use the HARDWARE SPI pins, which are unique // to each board and not reassignable. For Arduino Uno: MOSI = pin 11 and // SCLK = pin 13. This is the fastest mode of operation and is required if // using the breakout board's microSD card.

// For 1.44" and 1.8" TFT with ST7735 use: //Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST); // D v21 uncomment this and comment the line below to use 1.44inch display.Need to change the display font in case I use 1.44"

// For 1.14", 1.3", 1.54", and 2.0" TFT with ST7789: Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST); // D v22 uncommment to use this display

#include <ArduinoHttpClient.h> #include <ArduinoJson.h> #include <MKRNB.h>

// Debug options #define PRINT_AT true // Show or hide AT command output from the modem

// PIN Number const char PINNUMBER[] = ""; char apn[] = "soracom.io"; char user[] = "sora"; char pass[] = "sora";

// Server details const char server[] = "unified.soracom.io"; const int port = 80;

NBClient client; GPRS gprs; NB nbAccess(PRINT_AT); HttpClient http(client, server, port);

// connection state bool connected = false;

// Publish interval long previousMillis = 0; long interval = 1000; // milliseconds // D v2orginial value: long interval = 20000; chnages the time interval in which it will report

void setup(void) {

// tft.initR(INITR_144GREENTAB); // Init ST7735R chip, green tab

// OR use this initializer (uncomment) if using a 1.3" or 1.54" 240x240 TFT: tft.init(240, 240); // Init ST7789 240x240 // D v22 uncommment to use this display

// tft print function! tftPrintTest();

pinMode(SARA_RESETN, OUTPUT); digitalWrite(SARA_RESETN, LOW); pinMode(SARA_PWR_ON, OUTPUT);

//Initialize serial and wait for port to open: Serial.begin(115200);

//D v33 /while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only }/

start_and_connect_modem();

}

void loop() { tft.invertDisplay(true); delay(500);

tft.setTextColor(ST77XX_GREEN); tft.setCursor(0, 10);

tft.setCursor(0, 0);
tft.fillScreen(ST77XX_BLACK);

tft.println(&quot;hello world&quot;);


}



void tftPrintTest() { tft.setRotation(3); tft.setTextWrap(true); tft.fillScreen(ST77XX_BLACK); tft.setCursor(0, 0); tft.setTextColor(ST77XX_GREEN); tft.setTextSize(2); }

Below is the code with the cloud connection added

/**************************************************************************
  This is a library for several Adafruit displays based on ST77* drivers.

Works with the Adafruit 1.8" TFT Breakout w/SD card ----> http://www.adafruit.com/products/358 The 1.8" TFT shield ----> https://www.adafruit.com/product/802 The 1.44" TFT breakout ----> https://www.adafruit.com/product/2088 The 1.14" TFT breakout ----> https://www.adafruit.com/product/4383 The 1.3" TFT breakout ----> https://www.adafruit.com/product/4313 The 1.54" TFT breakout ----> https://www.adafruit.com/product/3787 The 2.0" TFT breakout ----> https://www.adafruit.com/product/4311 as well as Adafruit raw 1.8" TFT display ----> http://www.adafruit.com/products/618

Check out the links above for our tutorials and wiring diagrams. These displays use SPI to communicate, 4 or 5 pins are required to interface (RST is optional).

Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit!

Written by Limor Fried/Ladyada for Adafruit Industries. MIT license, all text above must be included in any redistribution **************************************************************************/ #include <Adafruit_Fingerprint.h> #include <Adafruit_GFX.h> // Core graphics library #include <Adafruit_ST7735.h> // Hardware-specific library for ST7735 #include <Adafruit_ST7789.h> // Hardware-specific library for ST7789 #include <SPI.h> #include <Bounce2.h> // https://github.com/thomasfredericks/Bounce2 //#include <EEPROM.h> #include <FlashStorage.h>

#if defined(ARDUINO_FEATHER_ESP32) // Feather Huzzah32 #define TFT_CS 14 #define TFT_RST 15 #define TFT_DC 32

#elif defined(ESP8266) #define TFT_CS 4 #define TFT_RST 16 #define TFT_DC 5

#else // For the breakout board, you can use any 2 or 3 pins. // These pins will also work for the 1.8" TFT shield. #define TFT_CS 1 // D v25 changes to use pin 1 for CS in MKR1500 #define TFT_RST -1 // Or set to -1 and connect to Arduino RESET pin // D v25 changes to use built in reset pinout in MKR1500 #define TFT_DC 2 // D v25 changes to use pin 2 for CS in MKR1500 #endif

//D v15 for audrino to connect to fingerprint sensor //D v2 #if (defined(AVR) || defined(ESP8266)) && !defined(AVR_ATmega2560) // For UNO and others without hardware serial, we must use software serial... // pin #2 is IN from sensor (GREEN wire) // pin #3 is OUT from arduino (WHITE wire) // Set up the serial port to use softwareserial.. SoftwareSerial mySerial(2, 4);

#else // On Leonardo/M0/etc, others with hardware serial, use hardware serial! // #0 is green wire, #1 is white #define mySerial Serial1

#endif

// OPTION 1 (recommended) is to use the HARDWARE SPI pins, which are unique // to each board and not reassignable. For Arduino Uno: MOSI = pin 11 and // SCLK = pin 13. This is the fastest mode of operation and is required if // using the breakout board's microSD card.

// For 1.44" and 1.8" TFT with ST7735 use: //Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST); // D v21 uncomment this and comment the line below to use 1.44inch display.Need to change the display font in case I use 1.44"

// For 1.14", 1.3", 1.54", and 2.0" TFT with ST7789: Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST); // D v22 uncommment to use this display

#include <ArduinoHttpClient.h> #include <ArduinoJson.h> #include <MKRNB.h>

// Debug options #define PRINT_AT true // Show or hide AT command output from the modem

// PIN Number const char PINNUMBER[] = ""; char apn[] = "soracom.io"; char user[] = "sora"; char pass[] = "sora";

// Server details const char server[] = "unified.soracom.io"; const int port = 80;

NBClient client; GPRS gprs; NB nbAccess(PRINT_AT); HttpClient http(client, server, port);

// connection state bool connected = false;

// Publish interval long previousMillis = 0; long interval = 1000; // milliseconds // D v2orginial value: long interval = 20000; chnages the time interval in which it will report

void setup(void) {

// tft.initR(INITR_144GREENTAB); // Init ST7735R chip, green tab

// OR use this initializer (uncomment) if using a 1.3" or 1.54" 240x240 TFT: tft.init(240, 240); // Init ST7789 240x240 // D v22 uncommment to use this display

// tft print function! tftPrintTest();

pinMode(SARA_RESETN, OUTPUT); digitalWrite(SARA_RESETN, LOW); pinMode(SARA_PWR_ON, OUTPUT);

//Initialize serial and wait for port to open: Serial.begin(115200);

//D v33 /while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only }/

start_and_connect_modem();

}

void loop() { tft.invertDisplay(true); delay(500);

tft.setTextColor(ST77XX_GREEN); tft.setCursor(0, 10);

tft.setCursor(0, 0);
tft.fillScreen(ST77XX_BLACK);

tft.println(&quot;hello world&quot;);


}



void tftPrintTest() { tft.setRotation(3); tft.setTextWrap(true); tft.fillScreen(ST77XX_BLACK); tft.setCursor(0, 0); tft.setTextColor(ST77XX_GREEN); tft.setTextSize(2); }

void post_data(String postData) { //Serial.println("making POST request"); String contentType = "application/json";

http.post("/", contentType, postData);

// read the status code and body of the response int statusCode = http.responseStatusCode(); String response = http.responseBody();

/Serial.print("Status code: "); Serial.println(statusCode); Serial.print("Response: "); Serial.println(response);/

}

void start_and_connect_modem(){ pinMode(SARA_RESETN, OUTPUT); digitalWrite(SARA_RESETN, LOW); pinMode(SARA_PWR_ON, OUTPUT);

// Send Poweron pulse digitalWrite(SARA_PWR_ON, HIGH); delay(150); digitalWrite(SARA_PWR_ON, LOW); delay(500); // Turn on the modem if (Serial) Serial.print(">>> Turning on modem..."); if (MODEM.begin()) { if (Serial) Serial.println(" done!"); } else { if (Serial) Serial.println(" error, could not turn on modem! Try power-cycling."); return; }

while (!MODEM.noop()); MODEM.sendf("ATI9"); MODEM.waitForResponse(2000);

// Run AT commands to reset the modem to global default settings Serial.print(">>> Resetting modem to default settings..."); MODEM.sendf("AT+CFUN=0"); MODEM.waitForResponse(6000); MODEM.sendf("AT+UMNOPROF=2"); MODEM.waitForResponse(2000); MODEM.sendf("AT+CFUN=15"); MODEM.waitForResponse(6000); MODEM.sendf("AT+CFUN=0"); MODEM.waitForResponse(2000); MODEM.sendf("AT+UMNOPROF=0"); MODEM.waitForResponse(2000); MODEM.sendf("AT+CFUN=15"); MODEM.waitForResponse(2000); MODEM.sendf("AT+URAT=7"); MODEM.waitForResponse(2000); //D v33 /MODEM.sendf("AT+UBANDMASK?"); MODEM.waitForResponse(6000);/ Serial.println(" done!");

delay(2000); // attempt to connect to GSM and GPRS: Serial.print("Attempting to connect to GSM and GPRS"); //Serial.println(); connect_modem();

}

void connect_modem(){ // After starting the modem with GSM.begin() // attach the shield to the GPRS network with the APN, login and password while (!connected) { if ((nbAccess.begin(PINNUMBER, apn, user, pass) == NB_READY) && (gprs.attachGPRS() == GPRS_READY)) { connected = true; } else { Serial.println("Not connected"); delay(1000); } }

Serial.println("You're connected to the network");
}

Can someone please let me know what I am missing?

Dave
  • 69
  • 7

0 Answers0