2015-07-27 4 views
0

Я пытаюсь сделать будильник с малиновым пи и ардуином. У меня возникла такая проблема, что, когда я использую последовательную связь для отправки ее номера, lcd не печатает номер. Я знаю, что arduino получает номер, по какой-то причине он просто не печатает его. Вместо этого он печатает странные символы и строки. This article shows how i use serial communication between them Это мой код arduino.Экран Lcd печатает странные символы вместо цифр

#include <LiquidCrystal.h> 


const int ledPin = 13; 
LiquidCrystal lcd(12,11,5,4,3,2); 
void setup() 
{ 
    pinMode(ledPin, OUTPUT); 
    Serial.begin(9600); 
    lcd.begin(16,2); 
    lcd.setCursor(0,1); 
    lcd.print("crystralball"); 
} 

void loop() 
{ 

    if (Serial.available()) 
    { 
    flash(Serial.read() - '0'); 
    } 
    delay(1000); 
} 

void flash(int n) 
{ 
    for (int i = 0; i < n; i++) 
    { 
    digitalWrite(ledPin, HIGH); 
    lcd.clear(); 
    lcd.write(n); 
    Serial.print(n); 
    Serial.flush(); 
    delay(100); 
    digitalWrite(ledPin, LOW); 
    delay(100); 
    } 

} 

ответ

1

Привет, постарайтесь изменить свой код в цикле следующим образом.

for (int i = 0; i < n; i++){ 
    digitalWrite(ledPin, HIGH); 
    lcd.clear(); 
    lcd.print(String(n)); 
    Serial.print(n); 
    Serial.flush(); 
    delay(100); 
    digitalWrite(ledPin, LOW); 
    delay(100); 
} 

Вы должны использовать метод print и передать строку.

+0

Спасибо, это сработало! Не могли бы вы объяснить мне, почему это сработало? – user2350459

+0

потому что идеал arduino немного странный. Я шучу, но вам нужно указать значение int как строку, прежде чем писать на lcd. И правильным способом записи на lcd является print(), как требуется библиотеке. – br00