간단한 LCD 디스플레이 예제를 this guide에서 만들었습니다. 작동 후 나는 그걸 가지고 놀고 싶습니다. 이 화면의 fps를 계산하는 프로그램을 작성했습니다. 가장 큰 문제는 Arduino가 얼마나 느린 지입니다.Arduino lcd fps 이상한 동작
프로그램 코드는 여기에 있습니다 :
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int lastMillis = 0;
long fps = 0;
void setup() {
lcd.begin(16, 2);
lcd.print("seconds ");
lcd.setCursor(0, 1);
lcd.print("fps ");
}
void loop() {
if ((millis() - lastMillis) > 1000) {
lcd.setCursor(8, 0);
lcd.print(millis()/1000);
lcd.setCursor(4, 1);
lcd.print(fps);
fps = 0;
lastMillis = millis();
}
fps = fps + 1;
}
그리고 그것은했다. Arduino가 소형 16x2 LCD 디스플레이에서 300,000fps 이상을 처리 할 수 있다는 것을 기뻤습니다.
그러나 초 수가 지나면 32 초 (매직 넘버) fps는 값 124,185에서 멈추고 이후에는 변경되지 않습니다.
왜 그런지 알면 누군가에게 설명해주십시오. 나는 fps (초당 0으로 설정 됨)가 멈추고 초가 계속 변하는 이유를 알지 못합니다.
나는 어떤 일이 발생했는지 보여주는 비디오가 있습니다.
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int lastMillis = 0;
long fps = 0;
void setup() {
lcd.begin(16, 2);
}
void loop() {
if ((millis() - lastMillis) > 1000) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("seconds ");
lcd.setCursor(0, 1);
lcd.print("fps ");
lcd.setCursor(8, 0);
lcd.print(millis()/1000);
lcd.setCursor(4, 1);
lcd.print(fps);
fps = 0;
lastMillis = millis();
}
fps = fps + 1;
}
을 그리고 그것은 더 악화 : ahaltindis이 제안 Video
그런 다음,이에 코드를 변경 video
동영상은 https://www.youtube.com/watch?v=HacKep-U_CY –
입니다. 디스플레이 fps 전에 lcd.clear()로 lcd를 청소하십시오. 수정 될 수 있습니다. – ahaltindis
나는 그것을했다. 그러나 도움이되지 않았다. 비디오 : [link] (https://www.youtube.com/watch?v=J9KwaYnJEus) –