【Arduino】利用FDC2214加LCD1602电容计测量A4纸张数量
生活随笔
收集整理的這篇文章主要介紹了
【Arduino】利用FDC2214加LCD1602电容计测量A4纸张数量
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/** 名稱:2019年全國(guó)電賽F題* 功能:極板電容測(cè)量A4紙張數(shù)量*/
#include <LiquidCrystal.h>
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);#include <Wire.h>
#include "FDC2214.h"
FDC2214 capsense(FDC2214_I2C_ADDR_0); // Use FDC2214_I2C_ADDR_1
#define CHAN_COUNT 4 // 四路電容測(cè)量
#define Beep 13long CapAvg;
long CapSum;
int PaperNum;
int AVal;
int Err;void setup() {LCDInit();pinMode(Beep, OUTPUT);pinMode(A0, INPUT);Wire.begin();Serial.begin(115200);//Serial.println("\nFDC2x1x test");//bool capOk = capsense.begin(0xF, 0x6, 0x5, true); //setup all four channels, autoscan with 4 channels, deglitch at 10MHz, internal oscillator bool capOk = capsense.begin(0xF, 0x6, 0x5, false); //setup all four channels, autoscan with 4 channels, deglitch at 10MHz, external oscillator if(capOk){Serial.println("Sensor OK");lcd.setCursor(0,0);lcd.print("Sensor OK");delay(1000);}else{Serial.println("Sensor Fail");lcd.setCursor(0,1);lcd.print("Sensor Fail");delay(1000);}
}void loop() {unsigned long capa[4]; // 總共有4路測(cè)量接口,對(duì)應(yīng)傳感器的IN0、IN1、IN2、IN3for(int i=0; i<11; i++) // 間隔200ms,讀取10個(gè)數(shù)據(jù),并進(jìn)行累加{ CapSum = (capsense.getReading28(0)/10) + CapSum; // 讀取IN0引腳測(cè)試電容數(shù)據(jù)delay(200);}CapAvg = CapSum / 10; // 平均值顯示,計(jì)算平均值AVal = analogRead(A0) - 512; // 讀取旋鈕輸入的誤差值,范圍-512~512CapAvg = CapAvg + AVal*10; // 將誤差值擴(kuò)大10倍,加入到平均值中Calculate();ShowResult();Buzzer();while(1);}/** 函數(shù)名稱:Beep* 功能:蜂鳴器發(fā)出測(cè)量成功提示音“嘀---嘀---嘀---”* 參數(shù):Null* 返回值:Null*/
void Buzzer()
{digitalWrite(13, HIGH);delay(1000);digitalWrite(13, LOW);//delay(300);//digitalWrite(13, HIGH);delay(300);digitalWrite(13, LOW);delay(300);//digitalWrite(13, HIGH);delay(300);digitalWrite(13, LOW);delay(300);
}/** 函數(shù)名稱:LCDInit* 功能:LCD1602液晶屏初始化* 參數(shù):Null* 功能:Null*/
void LCDInit()
{lcd.begin(16, 2); //設(shè)置LCD要顯示的列數(shù)、行數(shù),即2行16列lcd.clear();lcd.setCursor(0,1); //設(shè)置光標(biāo)位置為15行,0列lcd.print("testing......");
}/** 函數(shù)名稱:Calculate* 功能:計(jì)算紙張數(shù)量* 參數(shù):Null* 返回值:Null*/
void Calculate()
{if (CapAvg>=20000000){PaperNum = 0;}else if (CapAvg>910000 && CapAvg<=950000){PaperNum = 1;}else if (CapAvg>950000 && CapAvg<=960000){PaperNum = 2;}else if (CapAvg>960000 && CapAvg<=968000){PaperNum = 3;}else if (CapAvg>968000 && CapAvg<=973000){PaperNum = 4;}else if (CapAvg>973000 && CapAvg<=980000){PaperNum = 5;}else if (CapAvg>980000 && CapAvg<=988000){PaperNum = 6;}else if (CapAvg>988000 && CapAvg<=990000){PaperNum = 7;}else if (CapAvg>990000 && CapAvg<=997000){PaperNum = 8;}else if (CapAvg>997000 && CapAvg<=1000000){PaperNum = 9;}else if (CapAvg>1000000 && CapAvg<=1005000){PaperNum = 10;}else if (CapAvg>1005000 && CapAvg<=1007000){PaperNum = 11;}else if (CapAvg>1007000 && CapAvg<=1014000){PaperNum = 12;}else if (CapAvg>1014000 && CapAvg<=1020000){PaperNum = 13;}else if (CapAvg>1020000 && CapAvg<=1026000){PaperNum = 14;}else if (CapAvg>1026000 && CapAvg<=1032000){PaperNum = 15;}else if (CapAvg>1032000 && CapAvg<=1038000){PaperNum = 16;}else if (CapAvg>1038000 && CapAvg<=1044000){PaperNum = 17;}else if (CapAvg>1044000 && CapAvg<=1050000){PaperNum = 18;}else if (CapAvg>1050000 && CapAvg<=105600){PaperNum = 19;}else if (CapAvg>1056000 && CapAvg<=1062000){PaperNum = 20;}else if (CapAvg>1062000 && CapAvg<=1068000){PaperNum = 21;}else if (CapAvg>1068000 && CapAvg<=1074000){PaperNum = 22;}else if (CapAvg>1074000 && CapAvg<=1080000){PaperNum = 23;}else if (CapAvg>1080000 && CapAvg<=1086000){PaperNum = 24;}else if (CapAvg>1086000 && CapAvg<=1092000){PaperNum = 25;}else if (CapAvg>1092000 && CapAvg<=1098000){PaperNum = 26;}else if (CapAvg>1098000 && CapAvg<=1104000){PaperNum = 27;}else if (CapAvg>1104000 && CapAvg<=1100000){PaperNum = 28;}else if (CapAvg>1110000 && CapAvg<=1116000){PaperNum = 29;}else if (CapAvg>1116000 && CapAvg<=1122000){PaperNum = 30;}else if (CapAvg>1122000 && CapAvg<=1128000){PaperNum = 31;}else if (CapAvg>1128000 && CapAvg<=1134000){PaperNum = 32;}else if (CapAvg>1134000 && CapAvg<=1140000){PaperNum = 33;}else if (CapAvg>1140000 && CapAvg<=1146000){PaperNum = 34;}else if (CapAvg>1146000 && CapAvg<=1152000){PaperNum = 35;}else if (CapAvg>1152000 && CapAvg<=1158000){PaperNum = 36;}else if (CapAvg>1158000 && CapAvg<=1164000){PaperNum = 37;}else if (CapAvg>1164000 && CapAvg<=1170000){PaperNum = 38;}else if (CapAvg>1170000 && CapAvg<=1176000){PaperNum = 39;}else if (CapAvg>1176000 && CapAvg<=1182000){PaperNum = 40;}else if (CapAvg>1182000 && CapAvg<=1188000){PaperNum = 41;}else if (CapAvg>1188000 && CapAvg<=1194000){PaperNum = 42;}else if (CapAvg>1194000 && CapAvg<=1200000){PaperNum = 43;}else if (CapAvg>1200000 && CapAvg<=1206000){PaperNum = 44;}else if (CapAvg>1206000 && CapAvg<=1212000){PaperNum = 45;}else if (CapAvg>1212000 && CapAvg<=1218000){PaperNum = 46;}else if (CapAvg>1218000 && CapAvg<=1224000){PaperNum = 47;}else if (CapAvg>1224000 && CapAvg<=1230000){PaperNum = 48;}else if (CapAvg>1230000 && CapAvg<=1236000){PaperNum = 49;}else if (CapAvg>1236000 && CapAvg<=1242000){PaperNum = 50;}
}/** 函數(shù)名稱:ShowResult* 功能:顯示測(cè)量結(jié)果* 參數(shù):Null* 返回值:Null*/
void ShowResult()
{lcd.clear();lcd.setCursor(0,0);lcd.print("CapAvg: "); lcd.setCursor(7,0);lcd.print(CapAvg);if (PaperNum == 0){lcd.setCursor(0,1);lcd.print("Shorting Circuit");}else{lcd.setCursor(0,1);lcd.print("Number: ");lcd.setCursor(7,1);lcd.print(PaperNum);}
}
總結(jié)
以上是生活随笔為你收集整理的【Arduino】利用FDC2214加LCD1602电容计测量A4纸张数量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Arduino】斑马线指示灯Zabra
- 下一篇: 【Python】爬虫学习