煙霧感測器
串列埠通訊:乙個bit位乙個bit位的傳輸
接收方和傳送方有相同的設定和波特率
串列埠程式設計:設定串列埠資訊
串列埠:rs232:4根線
vcc
gnd
txdrxd
接線:斷電接線
接線後注意檢查是否接錯,
t->r r->t 交叉接線
開發板串列埠:右邊的四排針
4組串列埠
com1:通訊串列埠 /dev/ttysac0
com2:/dev/ttysac1
com3:/dev/ttysac2
com4:/dev/ttysac3
com5:沒寫驅動
使用煙霧感測器:
1.接線
2.初始化串列埠(感測器和開發板通訊的細節)設定串列埠
3.編寫程式,檢測煙霧濃度
煙霧感測器:
你給他傳送乙個固定的命令,他就會給你返回當前的煙霧濃度。
實踐:利用煙霧感測器測量煙霧濃度,實現煙霧報警(煙霧濃度高於某乙個設定值蜂鳴器報警),實時的把煙霧濃度顯示到開發板上面。
#include #include #include #include #include #include #include #include int * plcd;
//全域性變數,代表對映後的首位址
int value=0;
char number[10][840]=,
/*-- 文字: 1 --*/
/*-- 宋體26; 此字型下對應的點陣為:寬x高=18x35 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=24x35 --*/
,/*-- 文字: 2 --*/
/*-- 宋體26; 此字型下對應的點陣為:寬x高=18x35 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=24x35 --*/
,/*-- 文字: 3 --*/
/*-- 宋體26; 此字型下對應的點陣為:寬x高=18x35 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=24x35 --*/
,/*-- 文字: 4 --*/
/*-- 宋體26; 此字型下對應的點陣為:寬x高=18x35 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=24x35 --*/
,/*-- 文字: 5 --*/
/*-- 宋體26; 此字型下對應的點陣為:寬x高=18x35 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=24x35 --*/
,/*-- 文字: 6 --*/
/*-- 宋體26; 此字型下對應的點陣為:寬x高=18x35 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=24x35 --*/
,/*-- 文字: 7 --*/
/*-- 宋體26; 此字型下對應的點陣為:寬x高=18x35 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=24x35 --*/
,/*-- 文字: 8 --*/
/*-- 宋體26; 此字型下對應的點陣為:寬x高=18x35 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=24x35 --*/
,/*-- 文字: 9 --*/
/*-- 宋體26; 此字型下對應的點陣為:寬x高=18x35 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=24x35 --*/
};char word[5][1400] =
,/*-- 文字: 霧 --*/
/*-- 宋體26; 此字型下對應的點陣為:寬x高=35x35 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=40x35 --*/
,/*-- 文字: 濃 --*/
/*-- 宋體26; 此字型下對應的點陣為:寬x高=35x35 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=40x35 --*/
,/*-- 文字: 度 --*/
/*-- 宋體26; 此字型下對應的點陣為:寬x高=35x35 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=40x35 --*/
,/*-- 文字: : --*/
/*-- 宋體26; 此字型下對應的點陣為:寬x高=35x35 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=40x35 --*/ };
/*函式的功能:在指定的點顯示乙個指定的顏色
函式引數:
@x:你指定的點的橫座標
@y:你指定的點的縱座標
@color:你指定的顏色
函式的返回值:無
*/void pwm(int flag)
//[2]---write
//while(1)
// //sleep(1);
//break;
//}//[3]
close(fd);
}void lcd_draw_point(int x,int y,int color)
*(plcd+800*y+x) = color;
}//清屏
void lcd_clear(int color) }}
//顯示一張指定的到指定的位置
/*name:名字
x0,y0:起始位置
w,h:的大小
*/void lcd_draw_bmp(char *name,int x0,int y0)
int size;
int w,h;
//定位檔案的游標
char buf[4]=;
lseek(fd_bmp,0x02,seek_set);
read(fd_bmp,buf,4);
size = (buf[0]) | (buf[1]<<8) | (buf[2]<<16) | (buf[3]<<24);
lseek(fd_bmp,0x12,seek_set);
read(fd_bmp,buf,4);
w = (buf[0]) | (buf[1]<<8) | (buf[2]<<16) | (buf[3]<<24);
lseek(fd_bmp,0x16,seek_set);
read(fd_bmp,buf,4);
h = (buf[0]) | (buf[1]<<8) | (buf[2]<<16) | (buf[3]<<24);
lseek(fd_bmp,0x1c,seek_set);
read(fd_bmp,buf,2);
int color_depth = (buf[0]) | (buf[1]<<8);
printf("size = %d,w = %d,h = %d\n",size,w,h);
printf("color_depth = %d\n",color_depth);
//游標偏移到畫素資料處
lseek(fd_bmp,0x36,seek_set);
char pixel[w*h*(color_depth/8)];
read(fd_bmp,pixel,w*h*(color_depth/8));
close(fd_bmp);
//把畫素點資料合成顏色
char a,b,g,r;
int color;
int x,y;
int i = 0;
for(y=0;y200)
pwm(1);
else
pwm(0);
printf("smoke value = %d\n",value);
}int main()
//對映記憶體
plcd = mmap(null,800*480*4, prot_write | prot_read,map_shared,fd,0);
if(plcd == map_failed)
//操作螢幕
lcd_clear(0x00ffffff);
int index,i,j;
for( j=0;j<4;j++)
for(index = 0;index<175;index++)
if(number[a2][index] & (1
} monitor_smoke();
munmap(plcd,800*480*4);
close(fd);
}//測量顯示煙霧濃度並且報警。
//解對映
//關閉
return 0;
}
基於Arduino開發板實現電容觸控控制燈
在本篇文章中,我製作了乙個基於arduino電容式感應庫的觸控控制燈。您可以使用鋁箔製作觸控感測器 任何金屬物體都可以工作 你可以通過觸控鋁箔點亮或熄滅燈。capacitivesensor庫將兩個或多個arduino引腳轉換為電容式感測器,可以感應人體的電容。所有感測器的設定都需要乙個中到高值的電阻...
國產荔枝糖FPGA開發板實現FM發射
之前在zedboard上實現了fm發射,移植到荔枝糖fpga開發板上,執行異常,抓波形看,波形紊亂,由於最高時鐘為450m,估計是荔枝糖fpga開發板跑不了這麼高,那就降頻吧,降到18m果然可以發 top 如下 module top output 2 0 rgb led o,input clk24m...
linux系統移植(FS4412開發板)
linux系統移植主要由4大部分組成 1.交叉編譯器的安裝 2.u boot的移植 3.kernel的編譯與移植 4.根檔案系統的製作與移植 一.交叉編譯器的安裝 為什麼要安裝交叉編譯器?速度 開發板的編譯速度比較慢,而在虛擬機器上編譯速度快,節省時間 空間 編譯乙個檔案時,需要消耗很多資源,而開發...