2.1 LED Blink < RED à YELLOW à GREEN à >
step1:ต่อวงจรดังรูป
step2:พิมพ์ code ลงใน python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD) #Setup GPIO using Board numbering
GPIO.setup(8 ,GPIO.OUT) #Setup pin output
GPIO.setup(10, GPIO.OUT)
GPIO.setup(12, GPIO.OUT)
while True:
GPIO.output(8,GPIO.HIGH)
time.sleep(1)
GPIO.output(8,GPIO.LOW)
time.sleep(1)
GPIO.output(10,GPIO.HIGH)
time.sleep(1)
GPIO.output(10,GPIO.LOW)
time.sleep(1)
GPIO.output(12,GPIO.HIGH)
time.sleep(1)
GPIO.output(12,GPIO.LOW)
time.sleep(1)
step3: ทดสอบ
step1:ต่อวงจรดังรูป
- ใช้ ขา 6 (GND) ต่อตัวต้านทาน 330 โอมห์ และต่อ ขาลบของ LED
- ใช้ ขา 8(GP14),10(GP15),12(GP18) ต่อขาบวกของ LED
step2:พิมพ์ code ลงใน python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD) #Setup GPIO using Board numbering
GPIO.setup(8 ,GPIO.OUT) #Setup pin output
GPIO.setup(10, GPIO.OUT)
GPIO.setup(12, GPIO.OUT)
while True:
GPIO.output(8,GPIO.HIGH)
time.sleep(1)
GPIO.output(8,GPIO.LOW)
time.sleep(1)
GPIO.output(10,GPIO.HIGH)
time.sleep(1)
GPIO.output(10,GPIO.LOW)
time.sleep(1)
GPIO.output(12,GPIO.HIGH)
time.sleep(1)
GPIO.output(12,GPIO.LOW)
time.sleep(1)
- เข้าที่ Terminal พิมพ์คําสั่ง sudo python blink1.py(ชื่อไฟล์ที่save)
2.2 Switch Input
การทดลองนี้จะต่อปุ่มกดแบบ Pull-up LED จะติดค้าง เมื่อ กดปุ่มไฟ LED จะดับ
step1:ต่อวงจรดังรูป
- ใช้ ขา 6 (GND) ต่อตัวต้านทาน 330 โอมห์ และต่อ ขาลบของ LED
- ใช้ ขา 8 (GP14) ต่อเข้ากับขาบวกของ LED
- ใช้ ขา 1 (3V3) ต่อตัวต้านทาน 330 โอมห์ และต่อ ขาข้างหนึ่งของปุ่มกด แบบ Pull-up(ดังภาพ)
- ใช้ ขา 7 (GP4) ต่อเข้ากับขาอีกข้างหนึ่งของปุ่มกด
step2:พิมพ์ code
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(8,GPIO.OUT)
GPIO.setup(7,GPIO.IN)
while True:
if(GPIO.input(7)==1):
GPIO.output(8,GPIO.HIGH)
else:
GPIO.output(8,GPIO.LOW)
step3: ทดสอบimport RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(8,GPIO.OUT)
GPIO.setup(7,GPIO.IN)
while True:
if(GPIO.input(7)==1):
GPIO.output(8,GPIO.HIGH)
else:
GPIO.output(8,GPIO.LOW)
o เข้าที่ Terminal พิมพ์คําสั่ง sudo python button.py (ชื่อไฟล์ที่save)
o จะเห็นว่า ไฟ LED จะติดค้าง…เมื่อกดปุ่มกดไฟ LED จะดับ
2.3 DHT-22 Temperature Test
step1: ต่อวงจรดังรูป
จากภาพเราจะอ่านค่า temperature จาก GPIO4 ของ Raspberry Pi และเราจะใช้Python Module สําหรับอ่านค่าจาก DHT22 ไว้ของ Adafruit Industry ก่อนอื่น compile python module นี้กันก่อน
step2: พิมพ์ code ใน terminal
step2: พิมพ์ code ใน terminal
step3: ทดลองอ่านค่า
2.4 MAX7219 Display Test
step1:ต่อวงจรดังรูป
step2:พิมพ์ code
import sys
import time
import Adafruit_DHT
import RPi.GPIO as GPIO
sensor = Adafruit_DHT.DHT11
pin = 4
GPIO.setmode(GPIO.BOARD)
LATCH = 24 # CS
CLK = 23 # Clock
dataBit = 19 # DIN
GPIO.setup(LATCH, GPIO.OUT)
GPIO.setup(CLK, GPIO.OUT)
GPIO.setup(dataBit, GPIO.OUT)
# Setup IO
GPIO.output(LATCH, 0)
GPIO.output(CLK, 0)
def pulseCLK():
GPIO.output(CLK, 1)
time.sleep(.001)
GPIO.output(CLK, 0)
return
def pulseCS():
GPIO.output(LATCH, 1)
time.sleep(.001)
GPIO.output(LATCH, 0)
return
# shift byte into MAX7219
# MSB out first!
def ssrOut(value):
for x in range(0,8):
temp = value & 0x80
if temp == 0x80:
GPIO.output(dataBit, 1) # data bit HIGH
else:
GPIO.output(dataBit, 0) # data bit LOW
pulseCLK()
value = value << 0x01 # shift left
return
# initialize MAX7219 4 digits BCD
def initMAX7219():
# set decode mode
ssrOut(0x09) # address
ssrOut(0x00); # no decode data
# ssrOut(0xFF) # 4-bit BCD decode eight digits
pulseCS();
# set intensity
ssrOut(0x0A) # address
ssrOut(0x04) # 9/32s
pulseCS()
# set scan limit 0-7
ssrOut(0x0B); # address
ssrOut(0x07) # 8 digits
# ssrOut(0x03) # 4 digits
pulseCS()
# set for normal operation
ssrOut(0x0C) # address
# ssrOut(0x00); // Off
ssrOut(0x01) # On
pulseCS()
# clear to all 0s.
for x in range(0,9):
ssrOut(x)
ssrOut(0x0f)
pulseCS()
return
def writeMAX7219(digit, location, data):
ssrOut(location)
ssrOut(data | (digit<<7))
pulseCS()
return
def displayOff():
# set for normal operation
ssrOut(0x0C) # address
ssrOut(0x00); # Off
# ssrOut(0x01) # On
pulseCS()
return
def displayOn():
# set for normal operation
ssrOut(0x0C) # address
# ssrOut(0x00); # Off
ssrOut(0x01) # On
pulseCS()
return
Encode7Seg = [ 0b1111110,0b0110000,0b1101101,0b1111001,
0b0110011,0b1011011,0b1011111,0b1110000,
0b1111111,0b1111011,0b1110111,0b0011111,
0b1001110,0b0111101,0b1001111,0b1000111 ]
time.sleep(1)
initMAX7219()
while True:
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
if humidity is not None and temperature is not None:
print 'Temp={0:0.1f}*C Humidity={1:0.1f}%'.format(temperature, humidity)
TemppX = (int)(temperature * 10)
Tempp0 = TemppX % 10
TemppX = TemppX / 10
Tempp1 = TemppX % 10
TemppX = TemppX / 10
Tempp2 = TemppX % 10
HumidX = (int)(humidity * 10)
Humid0 = HumidX % 10
HumidX = HumidX / 10
Humid1 = HumidX % 10
HumidX = HumidX / 10
Humid2 = HumidX % 10
writeMAX7219( 0, 8, Encode7Seg[Tempp2])
writeMAX7219( 1, 7, Encode7Seg[Tempp1])
writeMAX7219( 0, 6, Encode7Seg[Tempp0])
writeMAX7219( 0, 5, 0b00001101) #Code=tabcdefgh
writeMAX7219( 0, 4, Encode7Seg[Humid2])
writeMAX7219( 1, 3, Encode7Seg[Humid1])
writeMAX7219( 0, 2, Encode7Seg[Humid0])
writeMAX7219( 0, 1, 0b00010111) #Code=tabcdefgh
time.sleep(2)
else:
print 'Failed to get reading. Try again!'
เข้าที่ Terminal พิมพ์คําสั่ง sudo python temp.py (ชื่อไฟล์ที่save)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น