ATTiny85 Последовательная связь с модулем Bluetooth
Для простого проекта я хотел бы использовать ATTiny85, подключенный к модулю Bluetooth HC-06, чтобы он мог общаться с моим телефоном Android.
Я написал код для моего Arduino Uno, и он работал как положено. Когда я изменил код для использования на моем ATTiny85, я получил сообщение об ошибке, что 'Serial' was not declared in this scope
и предположил, что ATTiny не поддерживает Hardware Serial.
Мне нужно прочитать строку при получении и спать MCU, когда не получает. Я пошел использовать SoftwareSerial и не смог получить строку, только первый символ.
Я подошел к нему каким-то образом, как определение char string[10];
как глобальный и string[i] = mySerial.read(); i++;
внутри цикла, но он не работает. Будь то сон или работа по чтению данных, я не мог заставить это работать.
Может кто-нибудь предоставить способ уложить ATTiny85 в спящий режим, проснуться, чтобы получить строку через Serial, и, пожалуйста, спать до следующих данных через Serial?
Спать я пользуюсь
void sleep() {
GIMSK |= _BV(PCIE); // Enable Pin Change Interrupts
PCMSK |= _BV(PCINT3); // Use PB3 as interrupt pin
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable(); // Sets the Sleep Enable bit in the MCUCR Register (SE BIT)
sei(); // Enable interrupts
sleep_cpu(); // sleep
// woke up
cli(); // Disable interrupts
PCMSK &= ~_BV(PCINT3); // Turn off PB3 as interrupt pin
sleep_disable(); // Clear Sleep Enable bit
sei(); // Enable interrupts
}
ISR(PCINT3_vect) {
}
И мой цикл что-то вроде
char inputString[10];
int i = 0;
void loop() {
sleep();
if (serial.available() > 0) {
char inputChar = serial.read();
if (inputChar == '2') { //Char to break
//Do something and reset i
} else {
inputString[i] = inputChar;
}
i++;
}
}
Спасибо всем.
1 ответ
if (serial.available() > 0) {
Это разовая вещь. Вы должны положить это в while
петля.
while (serial.available() > 0) {
char inputChar = serial.read();
if (inputChar == '2') { //Char to break
//Do something and reset i
} else {
inputString[i] = inputChar;
}
i++;
}
Не мешало бы проверить i
после увеличения тоже.