-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a4572fb
commit 444b408
Showing
5 changed files
with
215 additions
and
44 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,9 @@ | ||
{ | ||
"sketch": "code\\Testing_Crate\\GPS_uBlox\\GPS_uBlox.ino", | ||
"sketch": "code\\Testing_Crate\\TestCode\\TestCode.ino", | ||
"board": "rp2040:rp2040:rpipico", | ||
"port": "COM7", | ||
"port": "COM4", | ||
"output": "../build", | ||
"intelliSenseGen": "global", | ||
"programmer": "esptool", | ||
"configuration": "flash=2097152_0,freq=133,opt=Optimize,rtti=Disabled,stackprotect=Enabled,exceptions=Disabled,dbgport=Disabled,dbglvl=None,usbstack=picosdk,ipbtstack=ipv4only,uploadmethod=default" | ||
"configuration": "flash=2097152_0,freq=133,opt=Optimize,rtti=Disabled,stackprotect=Disabled,exceptions=Disabled,dbgport=Disabled,dbglvl=None,usbstack=picosdk,ipbtstack=ipv4only,uploadmethod=default" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,33 +1,205 @@ | ||
// Wire Master Writer | ||
// by Nicholas Zambetti <http://www.zambetti.com> | ||
|
||
// Demonstrates use of the Wire library | ||
// Writes data to an I2C/TWI slave device | ||
// Refer to the "Wire Slave Receiver" example for use with this | ||
// CONNECTIONS: | ||
// DS3231 SDA --> SDA | ||
// DS3231 SCL --> SCL | ||
// DS3231 VCC --> 3.3v or 5v | ||
// DS3231 GND --> GND | ||
|
||
// Created 29 March 2006 | ||
/* for software wire use below | ||
#include <SoftwareWire.h> // must be included here so that Arduino library object file references work | ||
#include <RtcDS3231.h> | ||
// This example code is in the public domain. | ||
SoftwareWire myWire(SDA, SCL); | ||
RtcDS3231<SoftwareWire> Rtc(myWire); | ||
for software wire use above */ | ||
|
||
#include <Wire.h> | ||
/* for normal hardware wire use below */ | ||
#include <Wire.h> // must be included here so that Arduino library object file references work | ||
#include <RtcDS3231.h> | ||
#include <Adafruit_ADS1X15.h> | ||
|
||
void setup() | ||
RtcDS3231<TwoWire> Rtc(Wire); | ||
/* for normal hardware wire use above */ | ||
Adafruit_ADS1115 ads; | ||
|
||
// handy routine to return true if there was an error | ||
// but it will also print out an error message with the given topic | ||
bool wasError(const char *errorTopic = "") | ||
{ | ||
Wire.begin(0x55); // join I2C bus (address optional for master) | ||
uint8_t error = Rtc.LastError(); | ||
if (error != 0) | ||
{ | ||
// we have a communications error | ||
// see https://www.arduino.cc/reference/en/language/functions/communication/wire/endtransmission/ | ||
// for what the number means | ||
Serial.print("["); | ||
Serial.print(errorTopic); | ||
Serial.print("] WIRE communications error ("); | ||
Serial.print(error); | ||
Serial.print(") : "); | ||
|
||
switch (error) | ||
{ | ||
case Rtc_Wire_Error_None: | ||
Serial.println("(none?!)"); | ||
break; | ||
case Rtc_Wire_Error_TxBufferOverflow: | ||
Serial.println("transmit buffer overflow"); | ||
break; | ||
case Rtc_Wire_Error_NoAddressableDevice: | ||
Serial.println("no device responded"); | ||
break; | ||
case Rtc_Wire_Error_UnsupportedRequest: | ||
Serial.println("device doesn't support request"); | ||
break; | ||
case Rtc_Wire_Error_Unspecific: | ||
Serial.println("unspecified error"); | ||
break; | ||
case Rtc_Wire_Error_CommunicationTimeout: | ||
Serial.println("communications timed out"); | ||
break; | ||
} | ||
return true; | ||
} | ||
return false; | ||
} | ||
|
||
byte y = 0; | ||
void setup() | ||
{ | ||
Serial.begin(115200); | ||
|
||
Serial.print("compiled: "); | ||
Serial.print(__DATE__); | ||
Serial.println(__TIME__); | ||
|
||
//--------RTC SETUP ------------ | ||
// if you are using ESP-01 then uncomment the line below to reset the pins to | ||
// the available pins for SDA, SCL | ||
// Wire.begin(0, 2); // due to limited pins, use pin 0 and 2 for SDA, SCL | ||
|
||
Rtc.Begin(); | ||
#if defined(WIRE_HAS_TIMEOUT) | ||
Wire.setWireTimeout(3000 /* us */, true /* reset_on_timeout */); | ||
#endif | ||
|
||
RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__); | ||
printDateTime(compiled); | ||
Serial.println(); | ||
|
||
if (!Rtc.IsDateTimeValid()) | ||
{ | ||
if (!wasError("setup IsDateTimeValid")) | ||
{ | ||
// Common Causes: | ||
// 1) first time you ran and the device wasn't running yet | ||
// 2) the battery on the device is low or even missing | ||
|
||
Serial.println("RTC lost confidence in the DateTime!"); | ||
|
||
// following line sets the RTC to the date & time this sketch was compiled | ||
// it will also reset the valid flag internally unless the Rtc device is | ||
// having an issue | ||
|
||
Rtc.SetDateTime(compiled); | ||
} | ||
} | ||
|
||
if (!Rtc.GetIsRunning()) | ||
{ | ||
if (!wasError("setup GetIsRunning")) | ||
{ | ||
Serial.println("RTC was not actively running, starting now"); | ||
Rtc.SetIsRunning(true); | ||
} | ||
} | ||
|
||
RtcDateTime now = Rtc.GetDateTime(); | ||
if (!wasError("setup GetDateTime")) | ||
{ | ||
if (now < compiled) | ||
{ | ||
Serial.println("RTC is older than compile time, updating DateTime"); | ||
Rtc.SetDateTime(compiled); | ||
} | ||
else if (now > compiled) | ||
{ | ||
Serial.println("RTC is newer than compile time, this is expected"); | ||
} | ||
else if (now == compiled) | ||
{ | ||
Serial.println("RTC is the same as compile time, while not expected all is still fine"); | ||
} | ||
} | ||
|
||
// never assume the Rtc was last configured by you, so | ||
// just clear them to your needed state | ||
Rtc.Enable32kHzPin(false); | ||
wasError("setup Enable32kHzPin"); | ||
Rtc.SetSquareWavePin(DS3231SquareWavePin_ModeNone); | ||
wasError("setup SetSquareWavePin"); | ||
if (!ads.begin(0x49)) | ||
{ | ||
Serial.println("Failed to initialize ADS."); | ||
while (1) | ||
; | ||
} | ||
// Setup 3V comparator on channel 0 | ||
ads.startComparator_SingleEnded(0, 1000); | ||
} | ||
|
||
void loop() | ||
{ | ||
Wire.beginTransmission(0x55); // transmit to device #8 | ||
// sends five bytes | ||
int16_t adc0; | ||
|
||
// Comparator will only de-assert after a read | ||
adc0 = ads.getLastConversionResults(); | ||
Serial.print("AIN0: "); | ||
Serial.println(adc0); | ||
|
||
Wire.write(y); | ||
delay(50); // sends one byte | ||
Wire.endTransmission(); // stop transmitting | ||
delay(100); | ||
if (!Rtc.IsDateTimeValid()) | ||
{ | ||
if (!wasError("loop IsDateTimeValid")) | ||
{ | ||
// Common Causes: | ||
// 1) the battery on the device is low or even missing and the power line was disconnected | ||
Serial.println("RTC lost confidence in the DateTime!"); | ||
} | ||
} | ||
|
||
RtcDateTime now = Rtc.GetDateTime(); | ||
if (!wasError("loop GetDateTime")) | ||
{ | ||
printDateTime(now); | ||
Serial.println(); | ||
} | ||
|
||
RtcTemperature temp = Rtc.GetTemperature(); | ||
if (!wasError("loop GetTemperature")) | ||
{ | ||
temp.Print(Serial); | ||
// you may also get the temperature as a float and print it | ||
// Serial.print(temp.AsFloatDegC()); | ||
Serial.println("C"); | ||
} | ||
|
||
delay(10000); // ten seconds | ||
} | ||
|
||
#define countof(a) (sizeof(a) / sizeof(a[0])) | ||
|
||
void printDateTime(const RtcDateTime &dt) | ||
{ | ||
char datestring[26]; | ||
|
||
y++; | ||
delay(500); | ||
snprintf_P(datestring, | ||
countof(datestring), | ||
PSTR("%02u/%02u/%04u %02u:%02u:%02u"), | ||
dt.Month(), | ||
dt.Day(), | ||
dt.Year(), | ||
dt.Hour(), | ||
dt.Minute(), | ||
dt.Second()); | ||
Serial.print(datestring); | ||
} |