IncomingByte
https://www.arduino.cc/reference/en/language/functions/communication/serial/available/
upload below sketch then Serial Monitor
SD card text.txt file Example 88 then Serial Monitor to check will show56
// read from the file until there's nothing else in it:
while (myFile.available()) {
Serial.write(myFile.read());
incomingByte = myFile.read();
Serial.println(incomingByte,DEC);
if (incomingByte == 56) {
digitalWrite(ledG, HIGH);
delay(10000);
digitalWrite(ledG, LOW);
delay(10000);
}
/*SD卡
CS --> to Arduino pin4
SCK --> to Arduino pin13
MOSI --> to Arduino pin11
MISO --> to Arduino pin12
VCC --> to Arduino 5V
GND --> to Arduino GND
*/
#include <SPI.h>
#include <SD.h>
File myFile;
String filename = "test.txt"; //要寫入的檔案名稱
int i = 0;
int ledG = 7; // 綠燈 正極 --> pin 7, 負極 --> GND
int ledR = 8; // 紅燈 正極 --> pin 8, 負極 --> GND
int incomingByte = 0;
void setup() {
pinMode(ledR, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(10,OUTPUT); //保留pin10, SD Library需要使用
Serial.begin(9600);
while (!Serial) {}
digitalWrite(ledR, HIGH);
Serial.print("Initializing SD card..."); //SD卡初始化
if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
}
void loop()
{
digitalWrite(ledG, HIGH);
digitalWrite(ledR, LOW);
/*
此範圍可以加入其他程式碼
*/
delay (3000);
for (int i=0; i <= 10; i++){ //燈號警告,此段時間可以關閉電源、再拔除SD卡。
digitalWrite(ledG, HIGH);
delay(100);
digitalWrite(ledG, LOW);
delay(100);
}
digitalWrite(ledR, HIGH); //下面的程式是寫入SD卡,此段時間內請勿關閉電源、拔取SD卡。
myFile = SD.open(filename, FILE_WRITE);
if (myFile) {
Serial.print("Writing to test.txt...");
//myFile.print(millis()); //寫入SD卡的時間,單位是1/1000秒。
//myFile.print(",");
//myFile.print("3"); //要寫入SD卡數據時,這一行請刪掉。
//myFile.print(0); //要寫入SD卡數據時,請以逗號分隔數據。
//myFile.print(",");
//myFile.print(1);
//myFile.print(",");
//myFile.print(2);
// ...
//myFile.println();
// close the file:
myFile.close();
Serial.println("done.");
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
// re-open the file for reading:
myFile = SD.open(filename);
if (myFile) {
Serial.println("test.txt:");
// read from the file until there's nothing else in it:
while (myFile.available()) {
Serial.write(myFile.read());
incomingByte = myFile.read();
Serial.println(incomingByte,DEC);
if (incomingByte == 56) {
digitalWrite(ledG, HIGH);
delay(10000);
digitalWrite(ledG, LOW);
delay(10000);
}
}
// close the file:
myFile.close();
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
delay (3000);
}
ANOTHER Sketch
/*SD卡
CS --> to Arduino pin4
SCK --> to Arduino pin13
MOSI --> to Arduino pin11
MISO --> to Arduino pin12
VCC --> to Arduino 5V
GND --> to Arduino GND
*/
#include <SPI.h>
#include <SD.h>
File myFile;
String filename = "test.txt"; //要寫入的檔案名稱
int i = 0;
int ledG = 8; // 綠燈 正極 --> pin 7, 負極 --> GND
int ledR = 7; // 紅燈 正極 --> pin 8, 負極 --> GND
int incomingByte = 0;
void setup() {
pinMode(ledR, OUTPUT);
//pinMode(ledG, OUTPUT);
pinMode(10,OUTPUT); //保留pin10, SD Library需要使用
Serial.begin(9600);
while (!Serial) {}
digitalWrite(ledR, HIGH);
Serial.print("Initializing SD card..."); //SD卡初始化
if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
}
void loop()
{
//digitalWrite(ledG, HIGH);
digitalWrite(ledR, LOW);
/*
此範圍可以加入其他程式碼
*/
delay (3);
for (int i=0; i <= 10; i++){ //燈號警告,此段時間可以關閉電源、再拔除SD卡。
//digitalWrite(ledG, HIGH);
delay(100);
//digitalWrite(ledG, LOW);
delay(100);
}
digitalWrite(ledR, HIGH); //下面的程式是寫入SD卡,此段時間內請勿關閉電源、拔取SD卡。
myFile = SD.open(filename, FILE_WRITE);
if (myFile) {
Serial.print("Writing to test.txt...");
//myFile.print(millis()); //寫入SD卡的時間,單位是1/1000秒。
//myFile.print(",");
//myFile.print("3"); //要寫入SD卡數據時,這一行請刪掉。
//myFile.print(0); //要寫入SD卡數據時,請以逗號分隔數據。
//myFile.print(",");
//myFile.print(1);
//myFile.print(",");
//myFile.print(2);
// ...
//myFile.println();
// close the file:
myFile.close();
Serial.println("done.");
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
// re-open the file for reading:
myFile = SD.open(filename);
if (myFile) {
Serial.println("test.txt:");
pinMode(ledG, OUTPUT);
// read from the file until there's nothing else in it:
while (myFile.available()) {
Serial.write(myFile.read());
incomingByte = myFile.read();
Serial.println(incomingByte,DEC);
Serial.println(incomingByte,DEC);
hello:
if (incomingByte == 57) {
digitalWrite(ledG, HIGH);
delay(10000);
goto hello;
}
}
// close the file:
myFile.close();
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
}
No comments:
Post a Comment