Доброго всем времени суток. Нужна помощь в программировании =) В общем имеется на SD карточке txt файл следующего содержания. Код (Text): 70 46 111 77 79 71 46 111 74 79 70 46 111 71 79 70 46 111 67 79 70 46 110 64 79 70 46 110 61 79 70 46 109 59 79 70 46 109 59 81 70 46 109 59 84 70 46 109 60 86 70 46 109 63 89 70 46 109 66 90 70 46 109 69 90 70 46 109 72 89 70 46 109 76 89 70 46 109 80 89 70 46 109 83 89 70 46 109 86 89 70 47 110 88 89 70 46 110 89 88 70 46 110 88 87 70 46 110 88 85 Это сохраненные углы 5-ти сервоприводов. Требуется считывать эти углы и поочередно записывать не занося их все сразу в ОЗУ ардуино. Т.е. прочитали первый угол (70), записали в 1-ю серво, прочитали второй угол (46), записали во 2-ю серво и т.д. Для реализации данной идеи предполагается использовать функции стандартной библиотеки "SD.h". А точнее: file.seek(pos) - функция изменения положения текущей позиции внутри файла file.peek() - функция считывания из файла байта данных, не перемещая указатель текущей позиции файла на следующий символ file.position() - функция, позволяющая узнать текущее положение указателя внутри открытого файла Напрашивается такой алгоритм: считываем байт данных в цикле от 0 до размера файла проверяем, не равен ли полученный символ пробелу: если не равен, заносим в...(вот тут непонятно, каким образом можно накапливать значения например в одной переменной типа int; массив в данном случае не годится), иначе записываем значение сервопривод и изменяем положение текущей позиции внутри файла на 1. Примерный код: Код (Text): char test; //символьная переменная для считывания байта данных char string[2]; // предполагаемый массив сток, для хранения одного угла SD.begin(53); myFile = SD.open("1.txt", FILE_READ); k_symbol = myFile.size(); for (int i=0; i<k_symbol; i++) { myFile.seek(i); test = myFile.peek(); if (test != ' ') { for (int i=0; i<2; i++) { string[i]=myFile.peek; } } else { pos = myFile.position(); myFile.seek(pos+1); } } myFile.close(); Не совсем понимаю, как можно занести один угол в значение int, чтобы потом передать на запись в сервопривод. Помогите пожалуйста
Код (Text): #define N_SERVO 5 int PIN_SERVO[N_SERVO] = {2,3,4,5,6}; Servo servo[N_SERVO]; for (int i = 0; i < N_SERVO; i++) { servo[i].attach(PIN_SERVO[i])); } data = SD.open("1.txt", FILE_READ); while (data.available()) { for (int i = 0; i < N_SERVO; i++) { servo[i].write(data.parseInt(' ')); } } data.close();
Ругается на строчку: Код (Text): servo[i].write(data.parseInt(' ')); Сообщение об ошибке: Код (Text): Arduino: 1.6.5 (Windows 7), Плата"Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)" In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/HardwareSerial.h:29:0, from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:224, from C:\Program Files (x86)\Arduino\libraries\SD\src/SD.h:18, from sketch_jul03a.ino:4: C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h: In function 'States onRun()': C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:97:8: error: 'long int Stream::parseInt(char)' is protected long parseInt(char skipChar); // as above but the given skipChar is ignored ^ sketch_jul03a:226: error: within this context within this context