App簡訊廣告看板



繼上一回的主角BTCom Project--Android手機傳送命令(簡訊)Arduino板子後。小孩問我拔鼻,你在幹甚麼?

想成為Maker,但最害怕被親朋好友問「哩到對喜爹銃蝦會?

雖然我腦袋浮現的解釋是期望能建立未來更美好智的慧生活環境智慧城市蘊藏著1.5兆美元商機啊! 有錢大家賺,走出代工、共創價值。

老實說,在仍然處於一事無成的泥淖中,無業遊民、擺攤、創業者跟Maker之間端看自己「面對/處理事情角度的差異」而已,此外沒甚麼不同。申請信用卡時,一律被勾「自由業」。慘!
  



為了跟小孩解釋功能,印了一些場景的紙張並剪了剛好可以套入LCD1602的洞洞。因為沒有彩色印表機,只好印黑白的。真正成熟的Maker,或許該入手3D印表機來印才對!




首先套用第一張場景示意圖,請發揮想像力,手持著手機,用第一人稱的視角。我說將來老爸的「機器人商鋪」外面會掛一片大的LCD面板,門口會有店的App QR Code,客人或路人可以透過QR Code下載App,就可以在店外的LCD看板留言了!




接著套用第二張場景示意圖,我說將來老爸賺大錢,開會捐一些大型LCD看板在車站、機場、商店街等公共場所。路人可以透過QR Code下載App,就可以留言了給需要的人。










再套用第三張場景示意圖,我說接下來老爸可以研發超大型拼接LCD,讓朋友開廣告公司,在全國各重要路口、建築物佈置這些超高解析度、超低成本的LCD廣告看板,解決LCD產能過剩的問題,讓有需要的人透過「一通簡訊就能全台灣同步留言」給目標族群。比如說你可以跟Hock全台同步示愛!

很多人想學Coding,各種程式語言千百種(/英文都學不好了,還…),但不得其門而入。老實說,我也是不求甚解,只要能拼湊出符合需求的功能就好。我相信,只要將知識分享出去,會有人比你更強並改良它,然後你能豁然開朗,共創價值,這是正向循環。



BTCom: Android 程式規劃
這一回的主角跟上一回一樣,程式碼也不用變(只是可稍微修改讓LCD1602能秀兩排字)如果懶得寫程式可以使用下面QR Code下載,若有Bug煩請告知,感恩!








BTCom: Arduino Uno 板程式規劃
Arduino BTCom範例程式LCD1602顯示結果

#include <SoftwareSerial.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h> // 使用整合I2CLCD1602顯示

// the maximum received command length from an Android system (over the bluetooth)
#define MAX_BTCMDLEN 128

// 建立一個軟體模擬的序列埠不要接反了!
// HC-06    Arduino
// TX       RX/Pin10
// RX       TX/Pin11
SoftwareSerial BTSerial(10,11); // Arduino RX/TX

// Addr, En, Rw, Rs, d4,d5,d6,d7 backlight, polarity
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3,POSITIVE); // 使用整合I2CLCD1602顯示

byte cmd[MAX_BTCMDLEN]; // received 128 bytes from an Android system
int len = 0; // received command length

void setup() {
    Serial.begin(9600);   // Arduino起始鮑率:9600
    BTSerial.begin(9600); // HC-06 出廠的鮑率:每個藍牙晶片的鮑率都不太一樣,請務必確認
   
    // 初始化LCD1602
    lcd.begin(16, 2);
    lcd.backlight();
}

void loop() {
    int insize, ii;
    int tick=0;
   
    // Bluetooth command listening
    cmd[0] = '\0';
    len = 0;
    while ( tick<MAX_BTCMDLEN ) { // 因為包率同為9600, Android送過來的字元可能被切成數份
        if ( (insize=(BTSerial.available()))>0 ){  // 讀取藍牙訊息
            for ( ii=0; ii<insize; ii++ ){
                cmd[(len++)%MAX_BTCMDLEN]=char(BTSerial.read());
            }
        }
        else {
            tick++;
        }
    }

// LCD1602顯示從Android手機傳過來的訊息
    lcdShow(cmd);
}

// LCD1602顯示從Android手機傳過來的訊息
void lcdShow(char* msg) {
    char str[17], str2[17]; // LCD1602不捲動時使能秀16個字元2
    len = strlen(msg);
    lcd.clear();

    if ( len>0 ) {
        sprintf(str,"%s",msg);
        if ( len>15 ) {
            str[16]=’\0;
            sprintf(str2,"%s",msg+16);
            lcd.setCursor(0,0); lcd.print(str);
            lcd.setCursor(0,1); lcd.print(str2);
        } else {
            lcd.setCursor(0,0); lcd.print(str);
        }
    }
}




最後我小孩給我的結論是我覺得你的創意不是很好,不過已經算很厲害了因為你才剛學而已不是嗎? (聽起來還蠻欣慰的)