Hello I/O


2.1   LED Blink < RED à YELLOW à GREEN à >
     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)                             


      step3: ทดสอบ

  •       เข้าที่ Terminal พิมพ์คําสั่ง  sudo python blink1.py(ชื่อไฟล์ที่save)
       ผลที่ได้:  จะได้ไฟกระพริบติดดับ1วินาทีทีละสี

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: ทดสอบ
                   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


                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!'

     step3:ทดสอบ
       เข้าที่ Terminal พิมพ์คําสั่ง sudo  python  temp.py (ชื่อไฟล์ที่save)



ไม่มีความคิดเห็น:

แสดงความคิดเห็น