首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ATTiny85与蓝牙模块的串行通信

ATTiny85与蓝牙模块的串行通信
EN

Stack Overflow用户
提问于 2017-12-03 10:05:24
回答 0查看 635关注 0票数 1

对于一个简单的项目,我想使用一个连接到HC-06蓝牙模块的ATTiny85,这样它就可以和我的安卓手机通话。

我为我的Arduino Uno写了代码,它像预期的那样工作。当我更改代码以在我的ATTiny85上使用时,我得到了一个错误,告诉我'Serial' was not declared in this scope,并假设ATTiny不支持硬件串行。

我需要在收到时读取字符串,在没有收到时让MCU休眠。我使用了SoftwareSerial,但无法获取字符串,只能获取第一个字符。

我以某种方式接近它,比如将char string[10];定义为全局的,并在循环中定义string[i] = mySerial.read(); i++;,但它一直不起作用。无论是睡眠,还是读取数据的工作,我都不能让它工作。

有没有人能提供一种方法让ATTiny85进入睡眠状态,唤醒通过串行接收字符串,并通过串行睡眠直到下一个数据?

为了睡觉,我用了

代码语言:javascript
复制
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) {
}

我的循环是这样的

代码语言:javascript
复制
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++;
  }
}

感谢所有人。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47614584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档