元件腳位規劃如下:
D0:預留RX使用(UART,上傳程式碼)
D1:預留TX使用(UART,上傳程式碼)
D2:預留腳位(已預留GROVE接頭)
D3:DHT11温濕度傳感器模組
D4:紅色LED模組
D5:蜂鳴器模組
D6:button SW
D7:預留腳位(已預留GROVE接頭)
D8:預留腳位(已預留GROVE接頭)
D9:預留腳位(已預留GROVE接頭)
D10:SPI腳位(SS)
D11:SPI腳位(MOSI)
D12:SPI腳位(MISO)
D13:SPI腳位(SCK)板子上的綠色LED
A0:旋轉電位器模組
A1:預留腳位(已預留GROVE接頭)
A2:聲音感測器
A3:預留腳位(已接出杜邦接頭)
A4:預留I2C模組腳位(SDA已接出杜邦接頭) 在 SW1上面
A5:預留I2C模組腳位(SCL已接出杜邦接頭) 在 SW1上面
A6:光敏電阻模組
OLED的程式庫 安裝 【U8g2】
讀取光感應器的值,並顯示在OLED上,同時控制LED燈光。別忘了要安裝OLED的程式庫 【U8g2】
#include <Arduino.h>
#include <U8x8lib.h>
U8X8_SSD1306_128X64_ALT0_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
// Light Switch
int sensorpin = 6; // Analog input pin that the sensor is attached to
int ledPin = 4; // LED port
int sensorValue = 0; // value read from the port
int outputValue = 0; // value output to the PWM (analog out)
void setup()
{
u8x8.begin();
u8x8.setFlipMode(1);u8x8.setFont(u8x8_font_chroma48medium8_r);
pinMode(ledPin, OUTPUT);
// Serial.begin(9600);
}
void loop()
{
// u8x8.clear();
u8x8.setCursor(0, 0);
u8x8.print("hello Arduino!");
sensorValue = analogRead(sensorpin); // read the analog in value:
outputValue = map(sensorValue, 0, 1023, 0, 255); // map it to the range of the analog out:
// Serial.println(sensorValue); // change the analog out value:
analogWrite(ledPin, 255 - outputValue);
u8x8.setCursor(0, 1);
u8x8.print(" ");
u8x8.setCursor(0, 1);
u8x8.print(sensorValue);
delay(30);
}
讀取光感應器的值,並顯示在OLED上,顯示no smok(禁菸)、no narcotics(反毒)、promising(人生充滿光明)
#include <Arduino.h>
#include <U8x8lib.h>
U8X8_SSD1306_128X64_ALT0_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
// Light Switch
int sensorpin = 6; // Analog input pin that the sensor is attached to
int ledPin = 4; // LED port
int sensorValue = 0; // value read from the port
int outputValue = 0; // value output to the PWM (analog out)
int oldstat=0;
int count=0;
void setup()
{
u8x8.begin();
u8x8.setFlipMode(1);u8x8.setFont(u8x8_font_chroma48medium8_r);
pinMode(ledPin, OUTPUT);
// Serial.begin(9600);
}
void loop()
{
// u8x8.clear();
u8x8.setCursor(0, 0);
u8x8.print("hello Arduino!");
sensorValue = analogRead(sensorpin); // read the analog in value:
outputValue = map(sensorValue, 0, 1023, 0, 255); // map it to the range of the analog out:
// Serial.println(sensorValue); // change the analog out value:
analogWrite(ledPin, 255 - outputValue);
u8x8.setCursor(0, 1);
u8x8.print(" ");
u8x8.setCursor(0, 1);
u8x8.print(sensorValue);
delay(30);
if ((outputValue<128) && (oldstat==0)){
count++;
oldstat=1;
}
if ((outputValue>128) && (oldstat==1)){
oldstat=0;
}
if (count>=4){
count=0;
}
u8x8.setCursor(0, 3);
u8x8.print(" ");
switch(count) {
case 1:
u8x8.setCursor(0, 3);
u8x8.print("no smok");
break;
case 2:
u8x8.setCursor(0, 3);
u8x8.print("no narcotics");
break;
case 3:
u8x8.setCursor(0, 3);
u8x8.print("promising");
break;
case 4:
Serial.println("D");
break;
case 5:
Serial.println("E");
break;
default:
Serial.println("Invalid number");
}
}