RPi.GPIO python module for Pine A64/A64+
#53
With this setup and  Python code I can confirm that all pins I added functions for work as input.

[Image: VGGMJTq.jpg]

Code:
# -*- coding: utf-8 -*-
import time
import RPi.GPIO as GPIO

class PIN:
   def __init__(self):
       # Setup GPIO to input
       #GPIO.cleanup()
       GPIO.setmode(GPIO.BCM)
       
       # "Left" side
       GPIO.setup(2,  GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(3,  GPIO.IN, pull_up_down=GPIO.PUD_UP)
       #GPIO.setup(4, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Broken!!!
       GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(10, GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(9,  GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(11, GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(5,  GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(6,  GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(13, GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(19, GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)
       
       # "Right" side
       GPIO.setup(14, GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(15, GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(25, GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(8,  GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(7,  GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(20, GPIO.IN, pull_up_down=GPIO.PUD_UP)
       GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_UP)

       self.p2  = False
       self.p3  = False
       self.p17 = False
       self.p27 = False
       self.p22 = False
       self.p10 = False
       self.p9  = False
       self.p11 = False
       self.p5  = False
       self.p6  = False
       self.p13 = False
       self.p19 = False
       self.p26 = False

       self.p14 = False
       self.p15 = False
       self.p18 = False
       self.p23 = False
       self.p24 = False
       self.p25 = False
       self.p8  = False
       self.p7  = False
       self.p12 = False
       self.p16 = False
       self.p20 = False
       self.p21 = False

       self.read()
       
   def read(self):
       self.old2  = self.p2
       self.old3  = self.p3
       self.old17 = self.p17
       self.old27 = self.p27
       self.old22 = self.p22
       self.old10 = self.p10
       self.old9  = self.p9
       self.old11 = self.p11
       self.old5  = self.p5
       self.old6  = self.p6
       self.old13 = self.p13
       self.old19 = self.p19
       self.old26 = self.p26
   
       self.old14 = self.p14
       self.old15 = self.p15
       self.old18 = self.p18
       self.old23 = self.p23
       self.old24 = self.p24
       self.old25 = self.p25
       self.old8  = self.p8
       self.old7  = self.p7
       self.old12 = self.p12
       self.old16 = self.p16
       self.old20 = self.p20
       self.old21 = self.p21

       self.p2  = False if GPIO.input(2)  else True
       self.p3  = False if GPIO.input(3)  else True
       self.p17 = False if GPIO.input(17) else True
       self.p27 = False if GPIO.input(27) else True
       self.p22 = False if GPIO.input(22) else True
       self.p10 = False if GPIO.input(10) else True
       self.p9  = False if GPIO.input(9)  else True
       self.p11 = False if GPIO.input(11) else True
       self.p5  = False if GPIO.input(5)  else True
       self.p6  = False if GPIO.input(6)  else True
       self.p13 = False if GPIO.input(13) else True
       self.p19 = False if GPIO.input(19) else True
       self.p26 = False if GPIO.input(26) else True
       
       self.p14 = False if GPIO.input(14) else True
       self.p15 = False if GPIO.input(15) else True
       self.p18 = False if GPIO.input(18) else True
       self.p23 = False if GPIO.input(23) else True
       self.p24 = False if GPIO.input(24) else True
       self.p25 = False if GPIO.input(25) else True
       self.p8  = False if GPIO.input(8)  else True
       self.p7  = False if GPIO.input(7)  else True
       self.p12 = False if GPIO.input(12) else True
       self.p16 = False if GPIO.input(16)  else True
       self.p20 = False if GPIO.input(20)  else True
       self.p21 = False if GPIO.input(21) else True

delay=1.0/60.0

if __name__=="__main__":
   counter2 = 0
   counter3 = 0
   counter17 = 0
   counter27 = 0
   counter22 = 0
   counter10 = 0
   counter9  = 0
   counter11 = 0
   counter5  = 0
   counter6  = 0
   counter13 = 0
   counter19 = 0
   counter26 = 0
   
   counter14 = 0
   counter15 = 0
   counter18 = 0
   counter23 = 0
   counter24 = 0
   counter25 = 0
   counter8  = 0
   counter7  = 0
   counter12 = 0
   counter16 = 0
   counter20 = 0
   counter21 = 0
   
   pin = PIN()

   while True:
       loopstart=time.time()
       pin.read()
       
       if pin.p2 and pin.p2 != pin.old2:
           counter2 += 1
           print "Button 2", counter2
       if pin.p3 and pin.p3 != pin.old3:
           counter3 += 1
           print "Button 3", counter3
       if pin.p17 and pin.p17 != pin.old17:
           counter17 += 1
           print "Button 17", counter17
       if pin.p27 and pin.p27 != pin.old27:
           counter27 += 1
           print "Button 27", counter27
       if pin.p22 and pin.p22 != pin.old22:
           counter22 += 1
           print "Button 22", counter22
       if pin.p10 and pin.p10 != pin.old10:
           counter10 += 1
           print "Button 10", counter10
       if pin.p9 and pin.p9 != pin.old9:
           counter9 += 1
           print "Button 9", counter9
       if pin.p11 and pin.p11 != pin.old11:
           counter11 += 1
           print "Button 11", counter11
       if pin.p5 and pin.p5 != pin.old5:
           counter5 += 1
           print "Button 5", counter5
       if pin.p6 and pin.p6 != pin.old6:
           counter6 += 1
           print "Button 6", counter6
       if pin.p13 and pin.p13 != pin.old13:
           counter13 += 1
           print "Button 13", counter13
       if pin.p19 and pin.p19 != pin.old19:
           counter19 += 1
           print "Button 19", counter19
       if pin.p26 and pin.p26 != pin.old26:
           counter26 += 1
           print "Button 26", counter26
           
       if pin.p14 and pin.p14 != pin.old14:
           counter14 += 1
           print "Button 14", counter14
       if pin.p15 and pin.p15 != pin.old15:
           counter15 += 1
           print "Button 15", counter15
       if pin.p18 and pin.p18 != pin.old18:
           counter18 += 1
           print "Button 18", counter18
       if pin.p23 and pin.p23 != pin.old23:
           counter23 += 1
           print "Button 23", counter23
       if pin.p24 and pin.p24 != pin.old24:
           counter24 += 1
           print "Button 24", counter24
       if pin.p25 and pin.p25 != pin.old25:
           counter25 += 1
           print "Button 25", counter25
       if pin.p8 and pin.p8 != pin.old8:
           counter8 += 1
           print "Button 8", counter8
       if pin.p7 and pin.p7 != pin.old7:
           counter7 += 1
           print "Button 7", counter7
       if pin.p12 and pin.p12 != pin.old12:
           counter12 += 1
           print "Button 12", counter12
       if pin.p16 and pin.p16 != pin.old16:
           counter16 += 1
           print "Button 16", counter16
       if pin.p20 and pin.p20 != pin.old20:
           counter20 += 1
           print "Button 20", counter20
       if pin.p21 and pin.p21 != pin.old21:
           counter21 += 1
           print "Button 21", counter21
       
       while loopstart+delay>time.time():
           time.sleep(0.001) # Must be sleep or get 94.7% CPU drain
  Reply


Messages In This Thread
RE: RPi.GPIO python module for Pine A64/A64+ - by Wolfenstein - 08-11-2016, 02:43 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  fm transmitter with gpio weasel18 2 4,829 09-10-2019, 04:28 AM
Last Post: desai_amogh
  How to use dts or other setup to declare gpio pin Interrupt (e.g. a button)? dkebler 1 3,599 06-12-2019, 10:37 AM
Last Post: dkebler
Lightbulb Sample GPIO codes highlighting RPi.GPIO-PineA64 and the PI bus MarkHaysHarris777 6 11,132 06-07-2019, 12:37 AM
Last Post: tllim
Star GPIO, SPI and I2C C++ Lib databit 7 11,216 02-04-2019, 05:45 AM
Last Post: Jeff R
Information Howto: Controlling Pine64 GPIO via the filesystem (sysfs) on linux pfeerick 4 11,856 01-24-2019, 03:36 AM
Last Post: Fifth
  GPIO and SPI SamR1 20 31,607 03-15-2018, 10:32 AM
Last Post: jomoengineer
Question GPIO shockr 7 14,775 03-11-2018, 01:52 AM
Last Post: jomoengineer
  Read GPIO problem shworker 14 21,177 08-17-2017, 01:21 PM
Last Post: martinayotte
  Cross-wired Uart Ports between two Pine Boards via Cat5 Cable MarkHaysHarris777 10 16,008 11-20-2016, 04:17 AM
Last Post: pfeerick
  GPIO fiq capability joseph 3 6,096 11-10-2016, 06:07 PM
Last Post: joseph

Forum Jump:


Users browsing this thread: 2 Guest(s)