// // sampleCLCD: CLCD (Character LCD) サンプルプログラム // xkozima@myu.ac.jp // // メインプログラム // コンパイル : cc sampleCLCD.cpp raspCLCD.o raspGPIO.o -o sampleCLCD // 普通の使い方 : sudo ./sampleCLCD // (適当にテキストを入れるorペースト) 改行して // ^D を打つ // 面白い使い方 : sudo apt-get install kakasi // iconv -f utf-8 -t sjis | kakasi -w | kakasi -Hk -Kk -Jk -Ea | sudo ./sampleCLCD // (漢字かな混じりのテキストを入れるorペースト) 改行してから // ^D を打つ #include "raspCLCD.h" #define BUF_SIZE 100 #define LINE_LEN 16 #define DELAY_MS 200 int main (int argc, char *argv[]) { CLCD display; char buffer[BUF_SIZE]; char line[LINE_LEN + 1]; // null 文字分も入れる display.init(); display.locate(0, 1); display.print("= Raspberry Pi ="); // line を空白で埋める(null 留めも忘れずに) for (int i = 0; i < LINE_LEN; i++) line[i] = ' '; line[LINE_LEN] = '\0'; // 標準入力から最大100バイトずつ buffer に読み込んで表示 while (fgets(buffer, BUF_SIZE, stdin)) { // buffer の各文字について... for (int i = 0; i < strlen(buffer); i++) { // まず line を1文字左に送る(右端の1文字はそのまま) for (int j = 0; j < LINE_LEN - 1; j++) line[j] = line[j+1]; // line の右端に buffer からの1文字を入れる if (buffer[i] == '\n') // 改行コードは空白に強制変換 line[LINE_LEN - 1] = ' '; else // そうでなければ1文字を右端に入れる line[LINE_LEN - 1] = buffer[i]; // line を LCD に表示する display.locate(0, 0); display.print(line); // 1文字分のディレイ usleep(DELAY_MS * 1000); } } // 最後に line を空送りして,すべての文字を左端から追い出す for (int i = 0; i < LINE_LEN; i++) { // まず line を1文字左に送る(右端の1文字はそのまま) for (int j = 0; j < LINE_LEN - 1; j++) line[j] = line[j+1]; // line の右端に空白文字を入れる line[LINE_LEN - 1] = ' '; // line を LCD に表示する display.locate(0, 0); display.print(line); // 1文字分のディレイ usleep(DELAY_MS * 1000); } } //