Lesson 105-6: How to Arduino LCD Clock Using DS1307 RTC Module with Alarm
In this lesson, we have seven projects in one. We learn how to use the DS1307 Real-Time Clock (RTC) module to build a clock using Arduino.
This is project 7: LCD Clock using the DS1307 RTC module with alarm. We learn how to display a full calendar and clock on an LCD1602 or LCD2004 LCD display and display alarms on the LCD. We use an LCD screen with the I2C module, which allows us to use only four wires.
404-Lesson 105: Ultimate Arduino Clock Projects Using DS1307
语言: C++
/*
Original from File->Examples->SD SD card read/write
* Lesson 106-1: Reading voltage from potentiometer and saving it on microSD card
In this example we read A0 pin to read the potentiometer's voltage
and writing it to the Micro SD card as a CSV file for Excel.
We have also a push button, when pressed, it will print the
file data on the serial monitor.
In the lesson https://youtu.be/TduSOX6CMr4
Example 1: Card info demonstrated
Example 2: file list demonstrated
Example 3: Datalogger
Example 4: DoNotBlockWrite
Example 5: Reading potentiometer, saving on micro SD card and using push button to read it
Example 6 (this code): Using example 5 but creating a CSV file so we can open it in Excel
* Watch Video instruction for this code: https://youtu.be/TduSOX6CMr4
*
* This code is part of Arduino Step by Step Course which starts here: https://youtu.be/-6qSrDUA5a8
*
* for the library of this code visit http://robojax.com/
*
If you found this tutorial helpful, please support me so I can continue creating
content like this. Make a donation using PayPal by credit card https://bit.ly/donate-robojax
written/updated by Ahmad Shamshiri on Jun 18, 2022
www.Robojax.com
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4 (for MKRZero SD: SDCARD_SS_PIN)
created Nov 2010
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe
This example code is in the public domain.
*/
#include <SPI.h>
#include <SD.h>
//serial monitor print while writing log
boolean serialPrint = true;//true or false
char *logFile ="datalog.csv";//file name. must be max 8 character excluding the extension (book.txt is 4 char)
int readPushButtonPin = 9;
long logIntervals = 300;//in milliseconds
long rememberTime=millis();//do not change
boolean headerWritten=false;//do not change
File myFile;
void writLog(float);//prototype of writLog funciton at the bottom of this code
void readLog(void);//prototype of readLog funciton at the bottom of this code
void setup() {
//Watch the instruction to this code on YouTube https://youtu.be/TduSOX6CMr4
// 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
}
pinMode(readPushButtonPin, INPUT_PULLUP);
Serial.print("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("initialization failed!");
while (1);
}
Serial.println("initialization done.");
SD.remove(logFile);
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
myFile = SD.open(logFile, FILE_WRITE);
if (!myFile) {
Serial.println("log file missing");
while(1);
}
}
void loop() {
int sensor = analogRead(A0);//read A0 pin
//convert value of 0 to 1023 to voltage.
//Arduino UNO is 5V so we use 5.0
float voltage = sensor * (5.0 / 1023.0);
if(digitalRead(readPushButtonPin) == LOW)
{
delay(100);//
readLog();
}
writLog(voltage);
//Watch the instruction to this code on YouTube https://youtu.be/TduSOX6CMr4
}//loop end
void writLog(float voltage)
{
//Watch the instruction to this code on YouTube https://youtu.be/TduSOX6CMr4
if( (millis()- rememberTime) >= logIntervals){
myFile = SD.open(logFile, FILE_WRITE);
if(!headerWritten){
myFile.println("Time(s),Voltage(V) ");//add the first row
headerWritten = true;//note that header is written
}
myFile.print(millis() ); //recod time
myFile.print(",");//writing comma
myFile.println(voltage);//Writing voltage
if(serialPrint){
Serial.print ("Time:");
Serial.print(millis());
Serial.print ("\tVoltage: ");
Serial.print(voltage);
Serial.println("V");
}
// close the file:
myFile.close();
if(serialPrint){
Serial.println(" done.");
}
rememberTime =millis();//remember now the time
//Watch the instruction to this code on YouTube https://youtu.be/TduSOX6CMr4
}//if logIntervals
}//writLog end
/*
* readLog
* Reads the data from the MicroSD Card and prints it on the serial monitor
*/
void readLog()
{
//Watch the instruction to this code on YouTube https://youtu.be/TduSOX6CMr4
// re-open the file for reading:
myFile = SD.open(logFile);
if (myFile) {
Serial.print("Reading ========");
Serial.println(logFile);
// read from the file until there's nothing else in it:
while (myFile.available()) {
Serial.write(myFile.read());
}
Serial.print("Reading END==========");
// close the file:
myFile.close();
} else {
// if the file didn't open, print an error:
Serial.print("readLog() error opening ");
Serial.println(logFile);
}
//Watch the instruction to this code on YouTube https://youtu.be/TduSOX6CMr4
}//readLog() end
文件📁
没有可用的文件。