Написал код для того чтобы при срабатывании датчика удара на SD записывались данные, но идет сигнал на спикер, а данные не вносятся в файл. Можете подсказать что ни так.
#include <SPI.h>
#include <SD.h>
#include <Wire.h> // Для I2C
Sd2Card card;
SdVolume volume;
SdFile root;
const int chipSelect = 4;
int Led = 13; // встроенный в адуино светодиод
int shock = 3; // пин для подлкючения вибродатчика
int spiker = 10; // пин spiker
int val; // переменная состояния датчика
void setup () {
pinMode (Led, OUTPUT); // LED pin as output
pinMode (shock, INPUT); // назначение входа для датчикаKY-002
pinMode(spiker, OUTPUT); // объявляем пин 10 как выход
Serial.begin(9600);
Serial.print("Инициализация SD-карты...");
if (!SD.begin(chipSelect)) {
Serial.println("Ошибка инициализации!");
return;
}
Serial.println("Инициализация завершена.");
}
void loop () {
val = digitalRead (shock); // чтение состояния датчика KY-002
if (val == HIGH ) { // когда сенсор определяет вибрацию, светодиод загорается
digitalWrite(spiker, LOW);
} else {
analogWrite(spiker, 100); // включаем пьезоизлучатель
delay(3000); // на 1000 мс (1 сек),
analogWrite(spiker, 0); // выключаем звук
delay(1000); // на 1 сек.
// Создаем объект для файла
File dataFile = SD.open("button_log.txt", FILE_WRITE);
// Если файл открыт успешно
if (dataFile) {
dataFile.println("Button Pressed"); // Выводим сообщение о нажатии
dataFile.close(); // Закрываем файл
Serial.println("Запись произведена.");
}
else {
Serial.println("Ошибка открытия файла!");
}
delay(500); // Задержка, чтобы избежать многократной записи при удержании кнопки
}
}