跳到主要內容

發表文章

目前顯示的是 2014的文章

Arduino 滑鼠滾輪編碼器/旋轉編碼器

滑鼠拆下來的滾輪編碼器 時序為                      → CW A  -----------          -------------    HIGH                ----------                  LOW                      ← CCW B  --------          ----------------    HIGH             ----------                     LOW A B 1  1↓CW 1  0 0  0 0  1 1  1 1  0 0  0 0  1↑CCW 程式碼參考底下網址來源修改而來 #define ENCODER_A_PIN 2 #define ENCODER_B_PIN 3 unsigned long time = 0; long position = 0; long num = 0; void setup() { pinMode(ENCODER_A_PIN,INPUT); pinMode(ENCODER_B_PIN,INPUT); attachInterrupt(0, RotaryEncoder, LOW); Serial.begin(9600); time = millis(); } void loop() { while (num != position) { num = position; Serial.println(num); } } void RotaryEncoder(){ int temp =digitalRead(ENCODER_B_PIN); if ((millis() - time) > 3) { if ( temp == LOW) { position++; }else{ if ( temp == HIGH) position--; } } time = millis(); } 沒中斷版本 int trigger=0; void Rotar

apache2 access.log 訊息

 [23/Aug/2014:22:28:45 +0800] "GET http://www.baidu.com/?rands=18054347 HTTP/1.1" 200 504 "-" "-" apache 訪問被塞了外部網站,並回應200 要是上面塞的都是廣告,不就免費幫別人點廣告了嗎... 我的主機並沒有架設代理伺服器 為什麼回傳200呢? 原來200是回應客戶端, 並回傳預設主機網頁內容, 並不會存取外部網站 來源: https://wiki.apache.org/httpd/ProxyAbuse

MINT 17安裝 Pepper Flash Player For Chromium

Ubuntu 14.04 用戶可以通過以下命令安裝Pepper Flash Player For Chromium : sudo apt-get install pepperflashplugin-nonfree sudo update-pepperflashplugin-nonfree --install 如果你想使用Beta 版的Google Chrome 中的Pepper Flash Player ,那麼可以把第二個命令改為: sudo update-pepperflashplugin-nonfree --install --beta --unverified 如果想使用非穩定版的Google Chrome 中的Pepper Flash Player,那麼可以把第二個命令改為: sudo update-pepperflashplugin-nonfree --install --unstable --unverified 如果你想卸載這個Flash Player ,那麼請執行以下命令: sudo update-pepperflashplugin-nonfree --uninstall 來源: http://blog.csdn.net/ygzhong000/article/details/26160953

編譯sunxi-tools

mowei@mowei ~/A10/sunxi-tools $ make gcc -g -O0 -Wall -Wextra -std=c99 -D_POSIX_C_SOURCE=200112L -Iinclude/  -o fexc fexc.c script.c script_uboot.c script_bin.c script_fex.c ln -s fexc bin2fex ln -s fexc fex2bin gcc -g -O0 -Wall -Wextra -std=c99 -D_POSIX_C_SOURCE=200112L -Iinclude/  -o bootinfo bootinfo.c bootinfo.c: In function ‘print_script’: bootinfo.c:274:25: warning: unused parameter ‘script’ [-Wunused-parameter]  void print_script(void *script)                          ^ gcc -g -O0 -Wall -Wextra -std=c99 -D_POSIX_C_SOURCE=200112L -Iinclude/ `pkg-config --cflags libusb-1.0`  -o fel fel.c  `pkg-config --libs libusb-1.0` Package libusb-1.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `libusb-1.0.pc' to the PKG_CONFIG_PATH environment variable No package 'libusb-1.0' found Package libusb-1.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `libusb-1.0.pc' to the

C++ CURL 下載圖片

想要把之前的專題架設在RPI 原本要從廠商提供的SDK向DVR主機 拉H264串流下來解碼成圖片做處理 可是! 他沒有提供ARM的動態函式庫... (虧我還花了一天找RPI硬解H264) 所以尋找替代方案! 所幸DVR提供網頁線上瀏覽 直接抓圖下來 連轉檔都省下來了!! 再拉圖下來有Authorization問題 要輸入帳號密碼才能登入下載 有兩種解法 以我這邊的DVR網址為例 原網址為 http://127.0.0.1/cgi-bin/net_jpeg.cgi?ch=0 第一種 再前面加入"帳號:密碼@"如下 http://user:pass@127.0.0.1/cgi-bin/net_jpeg.cgi?ch=0 第二種 再Header 自己添加Authorization headers = curl_slist_append(headers,"Authorization: Basic XXXXXXXXXXX"); XXXXXXXXXXX為 user:pass 進行 base64運算結果 詳情參考WIKI: HTTP基本認證 後記: 再抓DVR的圖時間耗費的很久 原本以為是keep-alive的問題減少握手次數因該可以加快速度 我還以為是我程式碼寫錯 結果DVR主機不支援........ 而花費的時間大都再內部的轉檔吧!(猜測) 使用範例multi-app 去同時抓圖下來(16張) 大概花費2秒 比原本一張1秒好多了 不過同時抓有時候程式會卡住... 不知道是主機來不及反應還是網路塞車了 下面程式碼使用QT且只能單張下載 可以參考 multi-app 修改 dlimage.h #ifndef DIMAGE_H #define DIMAGE_H #include <curl/curl.h> #include <QString> #include <QImage> class DLimage { public: DLimage(QString srcUrl); public: bool ChangeUrl(QString srcUrl); bool DownloadJ

MINT 17 安裝WINE 1.7

$ sudo add-apt-repository ppa:ubuntu-wine/ppa $ sudo apt-get update $ sudo apt-get install wine1.7 $ sudo apt-get install winetricks $ sudo apt-get install playonlinux $ rm -r ~/.wine $ WINEARCH=win32 WINEPREFIX=~/.wine winecfg $ winetricks dotnet20 gdiplus 開啟OSU~ 玩起來難度好像上升了....=W=" 玩日文遊戲要加上 LANG=ja_JP.UTF-8 來源: http://zackwang.blogspot.tw/2013/11/ubuntu-1310-wine-173.html http://www.mybubbleteatime.com/2013/06/getting-osu-to-work-in-linux-mint-15.html

Arduino Web Server WOL

1.修改原本的 Web Server 程式碼,並加上UDP 協定 broadcast MagicPacket outputString=""; targetmac=""; if(readString.indexOf("?")>0) { textend = readString.indexOf(" HTTP/1.1"); if((textstart = readString.indexOf("?input=")) >0) { textstart+=7; outputString=readString.substring(textstart,textend); outputString.toUpperCase(); for(int i=0;i<outputString.length();i=i+2) { int temp; char tempchar=0; int test=16; for(int j=0;j<2;j++) { if(outputString[i+j]>='A') { temp=(int)(outputString[i+j]-'A'+10); } else { temp=(int)(outputString[i+j]-'0'); } tempchar+=(char)(temp*test); test=test/16; } targetmac+=tempchar; } Udp.beginPacket(broadcast, 7); for (int i = 0; i < 6; ++i){ Udp.write(0xFF); } for(int i=

Arduino Ethernet Shield 實現家庭自動化

http://www.instructables.com/id/Control-an-LED-over-the-internet-using-the-Arduino/ 沿用此程式碼並加以修改 使用Arduino Ethernet Shield 架設WEB SERVER 利用網頁實現 網頁控制LED Slider調整PWM 監控可變電阻電壓 與一個可自定義控制輸入框

Arduino Web Server DECodeURI

1. 架設一個簡單Web Server,以GET方式傳值發現傳入中文字收到的東西變得很不正常 原因是以GET傳值會進行ENCodeURI, 如 : http://192.168.137.177/?test= 送出 ENCodeURI : http://192.168.137.177/?test=%E9%80%81%E5%87%BA 2. 而 unicode utf-8是一種針對Unicode的可變長度字元編碼 在中文文字使用 3byte 表示 以 ” 送 ” 的 16 進位表示為 ” E9 80 81” 以 ” 出 ” 的 16 進位表示為 ” E5 87 BA” URL 編碼會把一個字元以 16 進制表示轉成兩個字元,然後在其前面放置轉義字元 ("%") ,編碼完後 ” 送 ” 為 ” %E9%80%81” 、 " 出 ” 為 %E5%87%BA 。 3. 把 ’%’ 去除並 把兩個 ASCII 字元為一組如 ”E9”, 轉換成一個以 16 進位 表示 E9一個 字元。 ASCII 的 ’A’ 為 65 , 16 進位 A 為 10 , ASCII 的 ’0’ 為 48 , 16 進位 0 為 0 , 當讀到大寫英文字母進行數字計算以 ’A’ 為首減掉 ’A’ 的 65 加 10 ,讀到數字以 ’0’ 為首減掉 ’0’ 的 48 即可轉換成 16 進位表示。 因為兩個字元為一組把先讀到的字元轉成 16 進位做左移 4BIT 即乘於 16 ,與下一個字元轉成 16 進位相加,組合出一個 byte 存入字串內。 String newstring; for(int i=0;i<outputString.length();i++) { if(outputString[i]=='%') { int temp; char tempchar=0; int test=16; for(int j=1;j<3;j++) { if(outputString[i+j]>='A') { temp=(int)(outputString

Orange's實作結果1.2

1.2  org 07c00h  mov ax,cs  mov ds,ax  mov es,ax  call DispStr  jmp $ DispStr:  mov ax,BootMessage  mov bp,ax  mov cx,16  mov ax,01301h  mov bx,000ch  mov dl,0  int 10h  ret BootMessage: db "Hello, OS world!"   times 510-($-$$) db 0  dw 0xaa55

linaro lubuntu12.04安装vncserver

安装vncserver apt-get install tightvncserver 第一次启动,生产链接文件 ~/.vnc/xstartup vncserver :1 vncserver -kill :1 编辑~/.vnc/xstartup xsession-manger改为startlubuntu & 正式启动vncserver vncserver -geometry 1280x800 :1  需要开机自启,可以将上述脚本加到/etc/rc.local 來源: http://cubietech.com/forum.php?mod=viewthread&tid=56&highlight=VNC

cubieboard nand-part

#get the sunxi-tools and compile up cd /home git clone git://github.com/linux-sunxi/sunxi-tools cd sunxi-tools #get usb library if not installed, and compile. apt-get install libusb-1.0-0-dev make clean make 1。从SD卡进入CB2 2。查看nand的结构 root@cubieboard2:~/# ./nand-part -f a20 /dev/nand check partition table copy 0: mbr: version 0x00000200, magic softw411 OK check partition table copy 1: mbr: version 0x00000200, magic softw411 OK check partition table copy 2: mbr: version 0x00000200, magic softw411 OK check partition table copy 3: mbr: version 0x00000200, magic softw411 OK mbr: version 0x00000200, magic softw411 5 partitions partition  1: class =         DISK, name =   bootloader, partition start =    32768, partition size =    65536 user_type=0 partition  2: class =         DISK, name =          env, partition start =    98304, partition size =    32768 user_type=0 partition  3: class =         DISK, name =         boot, partition start =   131072, partition size =    6553

Cubietruck lubuntu啟動wifi

加載模塊 $modprobe bcmdhd 添加"bcmdhd" 到 /etc/modules $vi /etc/modules 下載安裝 $apt-get install wifi-radar或者$apt-get install linux-firmware 重啟$reboot 打開wifi $ifconfig wlan0 up 查找(看)wifi $iwlist wlan0 scan 來源:http://www.whatled.com/post-1351.html

boot.scr生成

boot.scr中可以包含用于载入script.bin,kernel,initrd(可选)以及设置内核启动参数的uboot命令。 新建 boot.cmd 文件,添加以下内容: setenv bootargs console = ttyS0 , 115200 noinitrd disp . screen0_output_mode = EDID : 1280x1024p60 init =/ init root =/ dev / mmcblk0p2 rootfstype = ext4 rootwait panic = 10 $ { extra } fatload mmc 0 0x43000000 boot / script . bin fatload mmc 0 0x48000000 boot / uImage bootm 0x48000000 详细解释: 上述第一行设置uboot的bootargs启动参数,格式为 参数=值,不同参数使用空格分开,其中 console=ttyS0,115200 含义为使用特定的串口ttyS0,波特率为 115200 noinitrd 含义为不使用ramdisk(内存磁盘) init=/init 含义为内核启起来后,进入系统中运行的第一个脚本 root=/dev/mmcblk0p2 含义为指定rootfs的位置为TF卡第二个分区 rootfstype=ext4 含义为根文件系统类型 rootwait 含义为等待设备/dev/mmcblk0p2就绪后才尝试挂载rootfs panic=10 传递内核参数,当遇到panic(内核严重错误)时等待10秒后重启 screen0_output_mode 设置合适的屏幕显示分辨率 更多的参数可以通过查看Linux内核源码目录下Documentation/kernel-parameters.txt文件了解 第二行和第三行为将script.bin和内核uImage加载到指定内存地址。fatload是U-Boot中装载linux kernel 到内存的指令。 基本用法:fatload <interface> <dev[:part]> <addr> <filename>

ft5x_ts 觸碰設定問題

這是一台壞掉的A10平板ET-425 裡面nand壞了無法開機 以sd開機執行debain 添加觸碰面板驅動 這邊使用NOVO 7 ELF的script.bin 修改 [ctp_para] ctp_boxchip_type = 2579 ctp_used                 =1 ctp_name                 = "ft5x_ts" ctp_twi_id               = 2 ctp_twi_addr             =0x38 ctp_screen_max_x         = 1024 ctp_screen_max_y         = 600 ctp_revert_x_flag        = 0 ctp_revert_y_flag        = 0 ctp_exchange_x_y_flag    = 1 ctp_int_port             = port:PH21<6><default><default><default> ctp_wakeup               = port:PB13<1><default><default><default> 我把編譯好的ft5x_ts.ko 放到根目錄裡 在/etc/rc.local 裡面加入 insmod /ft5x_ts.ko or /lib/modules/3.4.29+/kernel/drivers/input/touchscreen/ft5x_ts.ko 使開機自動載入 <6>===========================ft5x_ts_init=====================               [   57.580000] ===========================ft5x_ts_init=====================   <6>ctp_fetch_sysconfig_para.                                          

VS1053b Realtime MIDI Plugin

買了一塊VS1053b 模組 GPIO0 GPIO1卻被焊死只有SPI界面可使用 無法設置GPIO0 GPIO1為Realtime MIDI 模式 這時候就可以用Realtime MIDI Plugin 在初始VS1053b 前打入補丁就可以進入Realtime MIDI 模式了 LM4F120與VS1053b 腳位對應 MOSI: pin 25 主出 MISO: pin 26 主入 SCK: pin 23 時脈 XCS: pin 24 選擇線 RST: pin 2 重設 DREQ: pin 3 資料請求 XDCS: pin 4 資料選擇 SPI 設置上我使用第三組 SPI的函式並沒有直接控制CS函式 我直接pinMode設置SPI(3)的CS來控制 還好執行上沒出現問題 SPI.setModule(3); const int XCS = 24;//PD_1 pinMode(XCS, OUTPUT); 在SPI傳輸使用Realtime MIDI SPI 傳送MIDI資料之前必須要傳送空資料 void sendMIDI(byte data) {   SPI.transfer(0x0);   SPI.transfer(data); } 程式碼: https://www.dropbox.com/s/8zfgrw3qevfjl52/VS1053B_rtMIDI.rar 參考網頁 https://gist.github.com/microtherion/2636608

V-USB MIDI for Arduino

把V-USB-MIDI移到Arduino UNO使用 電路接法跟韌體調整請參考Cooper Maa的文章 D-  改成PD3接腳 D+ 改成PD2接腳 有設看門狗計數器1秒 UsbMIDI.update(); 間隔時間不要超過1秒 程式碼: https://www.dropbox.com/s/l4acdm8f4hdctkv/UsbMIDI.rar 來源參考 http://cryptomys.de/horo/V-USB-MIDI/index.html http://coopermaa2nd.blogspot.tw/2011/10/v-usb-examples-for-arduino.html

HC-05 AT模式設定

拿到HC-05藍芽模組 當然第一步就是修改設定 改改藍芽名字就能讓自己過過癮是本人的小確幸 這邊我使用PL2303HX跟HC-05進行連接 連接方式很簡單 HC-05  RXD→ PL2303HX  TXD HC-05  TXD→ PL2303HX  RXD HC-05  VCC → PL2303HX  5.0v HC-05  GND → PL2303HX  GND   我的HC-05藍芽模組右下角有個小按鈕 那是PIO11(PIN34) 進入AT模式必須先設高電位 所以在通電之前按住小按鈕在進行通電 看到LED燈約兩秒閃一下代表進入 AT模式即可放開按鈕 PL2303HX灌好驅動在檔案管理員查看使用哪個COM PORT 使用PUTTY進行連線SPEED設定 38400 這時後輸入"AT" 再按ENTER鍵就可以看到訊息"OK" 看到OK代表你連線成功了可以隨你下任何指令~! 我這邊會一直無限出現"OK"的訊息 只要按下" Ctrl +C"就可以停止了 這邊我被搞了一下 輸入"AT"時是看不到任何輸入反應的 一直以為連線失敗 其實只要大膽的輸入"AT"按下ENTER就好了 我使用過 arduino-1.0.5-r2版本的 serial monitor連線 輸入"AT"完全沒有反應.... 來源參考 http://gsyan888.blogspot.tw/2014/03/arduino-hc-05.html http://shop.cpu.com.tw/upload/2013/11/ADIO-HC-05-1.pdf