ArduinoはLEDスクリーンとシリアルモニターの両方に同時に出力できません

私はArduinoがLiquidCrystalライブラリを使ってLEDスクリーンとシリアルモニタの両方に出力しようとしています(後でtxtファイルかそのようなものに)。

私のコードでは、Serial.begin(9600)をコメントアウトしてから画面が正しく出力されていますが、インクルードするとすぐにシリアルモニタは正常に出力されますが、画面が反転してぎこちなく出力されます。 私はかなり新しいです、そして私は9600が多分そんなに多くの力が必要とされるので増強されるべきであるように私が知らない基本的な何かがあるのを知っていますか?

#include 
#include 
#include 

/*
  * Cannot do both screens and log in the console.
  * Currently Serial 9600 is commented out, to allow to print on the screen
  * Need Fixing
*/

#include "DHT.h"

#define DHTPIN 8    //what digital pin we're connected to


#define DHTTYPE DHT11  //DHT 11
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

DHT dht(DHTPIN, DHTTYPE);

LiquidCrystal lcd(1, 2, 4, 5, 6, 7);

void setup() {
  //Serial.begin(9600);
  Serial.println("Temperature Recorder");

  dht.begin();

 //Now LiquidCrystal led monitor stuff
  lcd.begin(16,2);
  lcd.setCursor(2,0);
  lcd.print("** Wanet **");
  delay(1500);
  lcd.setCursor(1,1);
  lcd.print("Motherfuckers.");
  delay(3000);
  lcd.clear();
}

void loop() {
 //Wait a few seconds between measurements.
  delay(1000);

 //Reading temperature or humidity takes about 250 milliseconds!
 //Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
 //Read temperature as Celsius (the default)
  float t = dht.readTemperature();
 //Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

 //Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

 //Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
 //Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print(" | Heat index: ");
  Serial.print(hic);
  Serial.print(" *C ");
  Serial.print(hif);
  Serial.println(" *F");
  Serial.println("------------------------------------");

 //  led screen printing
  lcd.setCursor(0,0);
  lcd.print("Temp:  Humidity:");
  lcd.setCursor(0,1);
  lcd.print(t);
  lcd.print("   ");
  lcd.print(round(f));
  lcd.print("%");

  delay(5000);
  lcd.clear();
  lcd.setCursor(2,0);
  lcd.print("The world");
  lcd.setCursor(4,1);
  lcd.print("OURS");
  delay(6000);
}

乾杯

2
追加された 編集された
ビュー: 1
ru de

4 答え

Arduinoのシリアルに関するドキュメント

シリアル

     

USB経由でコンピューターと同様にデジタルピン0(RX)と1(TX)で通信します。したがって、これらの機能を使用する場合は、デジタル入力または出力にピン0および1を使用することもできません。

あなたは2つのオプションを持っているか、あなたはそれらの2つのピンを使わない

like this LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

あるいは、それらのピンが必要な場合は、エミュレートする softwareSerial のようなライブラリを使用することを検討するかもしれません。シリアル通信はあなたの選択のピンのペアです。しかし、USB経由のシリアルモニタはとにかく動作しません。

3
追加された
ありがとう。デジタル0と1をシリアル通信したいときは何も差し込む必要がないということです。
追加された 著者 J.C,
あなたがarduinoのusbを使ってシリアル通信をしたい時はいつでもはい! 2つのarduino間でシリアル通信を行いたい場合は、softwareSerialと他のピンを使用できます。
追加された 著者 Tommaso Fontana,

Arduinoのシリアルに関するドキュメント

シリアル

     

USB経由でコンピューターと同様にデジタルピン0(RX)と1(TX)で通信します。したがって、これらの機能を使用する場合は、デジタル入力または出力にピン0および1を使用することもできません。

あなたは2つのオプションを持っているか、あなたはそれらの2つのピンを使わない

like this LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

あるいは、それらのピンが必要な場合は、エミュレートする softwareSerial のようなライブラリを使用することを検討するかもしれません。シリアル通信はあなたの選択のピンのペアです。しかし、USB経由のシリアルモニタはとにかく動作しません。

3
追加された
ありがとう。デジタル0と1をシリアル通信したいときは何も差し込む必要がないということです。
追加された 著者 J.C,
あなたがarduinoのusbを使ってシリアル通信をしたい時はいつでもはい! 2つのarduino間でシリアル通信を行いたい場合は、softwareSerialと他のピンを使用できます。
追加された 著者 Tommaso Fontana,

液晶ディスプレイには他のArduinoピンを使用してください。 D1はシリアル通信と共有されています。

0
追加された

液晶ディスプレイには他のArduinoピンを使用してください。 D1はシリアル通信と共有されています。

0
追加された