Как я могу использовать функцию для записи текста на ЖК-дисплее? — Arduino

#c #arduino

#c #arduino

Вопрос:

Я пытаюсь создать своего рода средство выбора чисел. Он покажет вам от 0 до 9 и, используя X, который я напишу поверх числа, вы можете выбрать число. В качестве примера 01234567×9 или 0123×56789. Однако я борюсь с печатью этого на ЖК-дисплее. Я использую tinkercad, поэтому все мои pin-соединения предопределены и в значительной степени корректны. Я использую стандартный ЖК-дисплей tinkercad и LiquidCrystal в качестве библиотеки.

Но когда я использую lcd.print("Hello World) in void loop(), он непрерывно печатает Hello World, очевидно, потому, что я помещаю его в цикл. Я пытался поместить это в функцию, но я не могу заставить ее работать… Некоторая помощь была бы идеальной.

Это код, который я использую в настоящее время, он возвращает «слишком много аргументов для функции ‘void PrintText ()'» как ошибку.

 // include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
char lcdtxt[] = "0123456789 x";

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
 
}
void PrintText(){
   lcd.print(lcdtxt);
   lcd.clear();
  }
void loop() {
  PrintText(lcdtxt);


}
  

Комментарии:

1. Не похоже, что у него должен быть тег C #.

2. определите функцию «setMessage», которая может устанавливать значение переменной «lcdtxt»

Ответ №1:

Видя ваш код, у вас есть глобальный массив символов, который содержит то, что будет записано, и PrintText() будет принимать его ввод оттуда:

 char lcdtxt[] = "0123456789 x";

void PrintText(){
   lcd.print(lcdtxt);
   lcd.clear();
  }

void loop() {
  PrintText(lcdtxt);
}
  

Итак, PrintText() не будет принимать никаких аргументов, и вы вызываете его с одним. В этом случае сообщение об ошибке точно сообщает вам, что происходит.

Чтобы исправить ваш код, вам следует только удалить параметр для вызова `PrintText ()’, поскольку я понимаю, что вы уже инициализировали массив.

 void loop() {
  PrintText();
}
  

В любом случае вы должны определить PrintText() функцию, принимающую a const char * , и отправить ее на ЖК-дисплей.

Что касается непрерывного повторения hello world, я бы переместил вызов на PrintText() to setup() , поскольку вам не нужно такое поведение. Или, может быть, оставить его loop() и остановить с помощью exit(0) .