【问题标题】:Arduino PhotoresistorArduino光敏电阻
【发布时间】:2019-04-22 22:51:47
【问题描述】:

我正在尝试制作一个 Arduino 项目,我需要光的价值来确定歌曲何时在 mp3 模块上播放。我正在尝试循环发送到光敏电阻的值,但我只收到 1 个数字,如何获得连续循环的值/数据?

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX

DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

void photoLoop() {
  Serial.begin(2400);
  pinMode(lrdPin, INPUT);
  int ldrStatus = analogRead(ldrPin);
  Serial.println(ldrStatus);
}

void setup() {

  mySoftwareSerial.begin(9600);
  Serial.begin(115200);

  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));

  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while (true);
  } else {
    photoLoop();
  }

  myDFPlayer.volume(30);  //Set volume value. From 0 to 30
  myDFPlayer.play(3);  //Play the first mp3
}

void loop() {

  while (!Serial.available()); //wait until a byte was received
  analogWrite(9, Serial.read());//output received byte

  static unsigned long timer = millis();

  if (millis() - timer > 3000) {
    timer = millis();
    //myDFPlayer.next();  //Play next mp3 every 3 second.
  }

  //  if (myDFPlayer.available()) {
  //    printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states.
  //  }
}

【问题讨论】:

  • pinMode(lrdPin, INPUT); int ldrStatus = analogRead(ldrPin); 中的ldrPinlrdPin 有区别吗?标签中有esp8266。您具体使用的是哪种芯片?你得到什么价值?

标签: arduino arduino-uno arduino-ide arduino-c++


【解决方案1】:

您没有在循环功能中读取光敏电阻的值。

你只读取一次值

  int ldrStatus = analogRead(ldrPin);

在设置中也是如此。所以你只会收到一个号码。

您为什么使用两个 Serial.begin() 语句 - 115200 和 2400?

试试这个

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX

DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

void photoLoop() {
  //  Serial.begin(2400); // YOU DONT NEED THIS
  pinMode(lrdPin, INPUT);
  int ldrStatus = analogRead(ldrPin);
  Serial.println(ldrStatus);
}

void setup() {

  mySoftwareSerial.begin(9600);
  Serial.begin(115200);

  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));

  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while (true);
  } 
  else {
    photoLoop();
  }

  myDFPlayer.volume(30);  //Set volume value. From 0 to 30
  myDFPlayer.play(3);  //Play the first mp3
}

void loop() {
  //CALL photoLoop in LOOP
  photoLoop()
    while (!Serial.available()); //wait until a byte was received
  analogWrite(9, Serial.read());//output received byte

  static unsigned long timer = millis();

  if (millis() - timer > 3000) {
    timer = millis();

    //myDFPlayer.next();  //Play next mp3 every 3 second.
  }

  //  if (myDFPlayer.available()) {
  //    printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states.
  //  }
}

【讨论】:

    猜你喜欢
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多