This is exactly as it seems, I have sufficient power, i'm running windows. I have no errors when uploading the sketch works perfectly when the usb cable is connected but for some reason when the cable isn't connected it wont run. What have I done wrong? I have a 10k resistor from RX to the GND pin and I've looked everywhere. I'm using an Arduino Leonardo with a WiFi shield. All I need to do is plug it into my computer and open the serial monitor it works. WTH?
#include <Thread.h>
#include <SPI.h>
#include <WiFi.h>
#include <WiFiUdp.h>
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 6
#define NUMPIXELS 30
// Time Gatherer data
char ssid[] = "RexNetLocal"; // your network SSID (name)
char pass[] = "8602055300"; // your network password
unsigned int localPort = 2390; // local port to listen for UDP packets
int keyIndex = 0;
int status = WL_IDLE_STATUS;
IPAddress timeServer(129, 6, 15, 28); // time.nist.gov NTP server
const int NTP_PACKET_SIZE = 48;
byte packetBuffer[ NTP_PACKET_SIZE];
WiFiUDP Udp; //Udp for pulling data
int hour;
int minute;
int second;
//Pixel Control Thread Data
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
Thread pixelControlThread = Thread();
//Pixel Mainthread Method
void pixelCallback(){
Serial.print("\nPixel Callback Method Called at : ");
Serial.print(hour);
Serial.print(':');
Serial.print(minute);
Serial.print(':');
Serial.println(second);
int brightness;
int sunrise = 4;
int sunset = 22;
if(hour == sunrise - 1){
brightness = (255.0*(minute/120.0));
} else if(hour == sunrise){
brightness = (255.0*((minute+60.0)/120.0));
} else if(hour == sunset - 1){
brightness = (255.0 - (255.0*(minute/120.0)));
} else if(hour == sunset){
Serial.println("sunset");
brightness = (255.0 - (255.0*((minute+60.0)/120.0)));
} else if (hour > sunset || hour < sunrise){
brightness = 0.0;
} else if (hour < sunset){
brightness = 255.0;
} else {
Serial.print("ERROR");
brightness = 255;
}
Serial.print("Brightness set to: ");
Serial.println(brightness);
for(int i=0;i<30;i++){
pixels.setPixelColor(i, pixels.Color(brightness,brightness,0)); // Yellow color that shifts with the daytime.
}
pixels.show(); // This sends the updated pixel color to the hardware.
}
void setup(){
pixels.begin(); // This initializes the NeoPixel library.
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
// check for the presence of the shield:
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
// don't continue:
while (true);
}
// attempt to connect to Wifi network:
while (status != WL_CONNECTED) {
Serial.print("Attempting to connect to SSID: ");
Serial.println(ssid);
status = WiFi.begin(ssid, pass);
delay(15000);
}
Serial.println("\nConnected to WiFi");
printWifiStatus();
Serial.println("\nStarting connection to server...");
Udp.begin(localPort);
pixelControlThread.onRun(pixelCallback);
pixelControlThread.setInterval(500);
}
void loop(){
sendNTPpacket(timeServer); // send an NTP packet to a time server
// wait to see if a reply is available
while(!Udp.parsePacket()){
sendNTPpacket(timeServer); // send an NTP packet to a time server
delay(1000);
}
if (Udp.parsePacket()) {
Udp.read(packetBuffer, NTP_PACKET_SIZE); // read the packet into the buffer
//the timestamp starts at byte 40 of the received packet and is four bytes,
// or two words, long. First, esxtract the two words:
unsigned long highWord = word(packetBuffer[40], packetBuffer[41]);
unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]);
unsigned long secsSince1900 = highWord << 16 | lowWord;
const unsigned long seventyYears = 2208988800UL;
unsigned long epoch = secsSince1900 - (60*60*4) - seventyYears;
Serial.print("\nThe EST time is "); // UTC is the time at Greenwich Meridian (GMT)
Serial.print(((epoch % 86400L) / 3600)); // print the hour (86400 equals secs per day)
hour = (((epoch % 86400L) / 3600));
Serial.print(':');
if (((epoch % 3600) / 60) < 10) {
// In the first 10 minutes of each hour, we'll want a leading '0'
Serial.print('0');
}
Serial.print((epoch % 3600) / 60); // print the minute (3600 equals secs per minute)
minute = ((epoch % 3600) / 60);
Serial.print(':');
if ((epoch % 60) < 10) {
// In the first 10 seconds of each minute, we'll want a leading '0'
Serial.print('0');
}
Serial.println(epoch % 60); // print the second
second = (epoch % 60);
}
if(pixelControlThread.shouldRun())
pixelControlThread.run();
// wait ten seconds before asking for the time again
delay(10000);
}
// send an NTP request to the time server at the given address
unsigned long sendNTPpacket(IPAddress& address) {
//Serial.println("1");
// set all bytes in the buffer to 0
memset(packetBuffer, 0, NTP_PACKET_SIZE);
// Initialize values needed to form NTP request
// (see URL above for details on the packets)
//Serial.println("2");
packetBuffer[0] = 0b11100011; // LI, Version, Mode
packetBuffer[1] = 0; // Stratum, or type of clock
packetBuffer[2] = 6; // Polling Interval
packetBuffer[3] = 0xEC; // Peer Clock Precision
// 8 bytes of zero for Root Delay & Root Dispersion
packetBuffer[12] = 49;
packetBuffer[13] = 0x4E;
packetBuffer[14] = 49;
packetBuffer[15] = 52;
//Serial.println("3");
// all NTP fields have been given values, now
// you can send a packet requesting a timestamp:
Udp.beginPacket(address, 123); //NTP requests are to port 123
//Serial.println("4");
Udp.write(packetBuffer, NTP_PACKET_SIZE);
//Serial.println("5");
Udp.endPacket();
//Serial.println("6");
}
void printWifiStatus() {
// print the SSID of the network you're attached to:
Serial.print("\nSSID: ");
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");
}