Светодиодная лента и SD-карта
Моя проблема проста, но крайне сложна. По какой-то причине я не могу одновременно взаимодействовать с SD-картой и светодиодной лентой через Arduino. После нескольких часов тестирования различных скриптов я на 99,99% уверен, что проблема связана с библиотекой SPI.h. Я попробовал простейший код для светодиодной ленты, например, включение светодиода номер 5. Если я подключаю SPI.h, код не работает, светодиод данных Arduino даже не загорается, Arduino ничего не отправляет на линию данных ленты. Если я удаляю SPI.h, код работает. Это действительно странно, я читал о том, что SPI.h вмешивается в работу контактов, поэтому теперь я ищу решение, как использовать модуль SD-карты без библиотеки SPI, если это возможно. Вот пример кода, который не работает из-за использования библиотеки SPI.h.
Любая помощь будет высоко оценена. Это крайне странно и проблематично.
#include <Time.h>
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#include <SPI.h>
#include <SD.h>
Sd2Card card;
SdVolume volume;
SdFile root;
const int chipSelect = 4;
#define PIN 6
#define NUMPIXELS 400
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
boolean stringComplete = false; // является ли строка полной
boolean readarray=false;
String inString = "";
int c=0;
int cc=0;
int led=0;
int i=0;
int j=0;
int pixel_n=0;
unsigned long start;
unsigned long endd;
//char* ledd[]={"", "", ""};
int ledd[3]={0,0,0};
File myFile;
void setup()
{
// Открываем последовательную связь и ждем открытия порта:
Serial.begin(9600);
pixels.begin();
while (!Serial) {
; // дождаться подключения последовательного порта. Требуется только для Leonardo.
}
Serial.print("\nInitializing SD card...");
// Теперь попробуем открыть «том»/«раздел» — это должен быть FAT16 или FAT32
if (!volume.init(card)) {
Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
return;
}
// вывести тип и размер первого тома типа FAT
uint32_t volumesize;
Serial.print("\nVolume type is FAT");
Serial.println(volume.fatType(), DEC);
Serial.println();
Serial.println("Ok we're done");
delay(2000);
pixels.setPixelColor(5, (200,200,200)); // ЭТО НЕ РАБОТАЕТ
pixels.show(); // ЭТО ИЛИ
Serial.begin(9600);
}
void loop(void) {
}
@moyk, 👍2
0
- Режимы открытия файлов на SD-карте Arduino добавление/перезапись
- Правильная схема карты Micro SD
- Управлять несколькими полосками WS2812B с разным количеством светодиодов.
- Сохранение файла .txt на SD-карту и чтение данных каждого содержимого в файл txt, а затем сохранение его в переменной
- Лучшая практика буферизации для непрерывной записи на SD-карту
- Как установить атрибуты для SD-файлов?
- Использование SD-адаптера 5 В в системе 3,3 В
- Как управлять светодиодами Neopixel параллельно?