ATTiny85与蓝牙模块的串行通信
对于一个简单的项目,我想使用连接到HC-06蓝牙模块的ATTiny85,以便它可以与我的Android手机通话。ATTiny85与蓝牙模块的串行通信
我为我的Arduino Uno编写了代码,它按预期工作。当我改变ATTiny85上使用的代码时,我得到一个错误,说'Serial' was not declared in this scope,并假定ATTiny不支持硬件串行。
我需要在接收时读取一个字符串,并在未接收时将其休眠。我去使用SoftwareSerial并且无法获取字符串,只是第一个字符。
我以某种方式接近它,例如在循环内定义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++; 
    } 
} 
感谢所有。
回答:
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。
以上是 ATTiny85与蓝牙模块的串行通信 的全部内容, 来源链接: utcz.com/qa/259198.html



