对于一个简单的项目,我想使用连接到 HC-06 蓝牙模块的 ATtiny85,这样它就可以与我的 Android 手机通话。
我为我的 Arduino Uno 编写了代码,它按预期工作。当我更改要在我的 ATTiny85 上使用的代码时,我收到一条错误消息,'Serial' was not declared in this scope
并假设 ATTiny 不支持硬件串行。
我需要在收到时读取一个字符串,在没有收到时让 MCU 休眠。我去使用 SoftwareSerial 并且无法获得字符串,只是第一个字符。
我以某种方式接近它,例如将 a 定义char string[10];
为全局并string[i] = mySerial.read(); i++;
在循环内部,但它一直不起作用。无论是睡眠,还是我读取数据的工作,我都无法让它工作。
有人可以提供一种方法让 ATTiny85 进入睡眠状态,唤醒以通过串行接收字符串并睡眠直到通过串行的下一个数据,好吗?
睡觉我正在使用
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++;
}
}
谢谢大家。