Warmango

main.go

Sep 16th, 2020
670
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package main
  2.  
  3. import (
  4.     "fmt"
  5.     "os"
  6.     "os/signal"
  7.     "time"
  8.  
  9.     "github.com/stianeikeland/go-rpio/v4"
  10. )
  11.  
  12. var (
  13.     currentInput string
  14. )
  15.  
  16. func main() {
  17.     // Clean up incase it exited improperly
  18.     c := make(chan os.Signal, 1)
  19.     signal.Notify(c, os.Interrupt)
  20.     go func() {
  21.         for sig := range c {
  22.             fmt.Println(sig)
  23.             fmt.Printf("Performing safe exit \n")
  24.             rpio.Close()
  25.             os.Exit(2)
  26.  
  27.         }
  28.     }()
  29.     err := rpio.Open()
  30.     if err != nil {
  31.         fmt.Println(err)
  32.     }
  33.  
  34.     fmt.Printf(" Press buttons!\n")
  35.     go func() {
  36.         for {
  37.  
  38.             time.Sleep(150000000)
  39.  
  40.             // key UP
  41.             if rpio.Pin(6).Read() == 0 {
  42.                 currentInput = "UP"
  43.             }
  44.  
  45.             // key DOWN
  46.             if rpio.Pin(19).Read() == 0 {
  47.                 currentInput = "DOWN"
  48.             }
  49.  
  50.             //key LEFT
  51.             if rpio.Pin(5).Read() == 0 {
  52.                 currentInput = "LEFT"
  53.             }
  54.  
  55.             //key RIGHT
  56.             if rpio.Pin(26).Read() == 0 {
  57.                 currentInput = "RIGHT"
  58.             }
  59.  
  60.             //key CLICK
  61.             if rpio.Pin(13).Read() == 0 {
  62.                 currentInput = "CLICK"
  63.             }
  64.  
  65.             //key 1
  66.             if rpio.Pin(21).Read() == 0 {
  67.                 currentInput = "Key1"
  68.             }
  69.  
  70.             //key 2
  71.             if rpio.Pin(20).Read() == 0 {
  72.                 currentInput = "Key2"
  73.             }
  74.  
  75.             //key 3
  76.             if rpio.Pin(16).Read() == 0 {
  77.                 currentInput = "Key3"
  78.             }
  79.  
  80.             // kill
  81.             if rpio.Pin(13).Read() == 0 && rpio.Pin(20).Read() == 0 {
  82.                 rpio.Close()
  83.                 os.Exit(5)
  84.             }
  85.         }
  86.     }()
  87.     for {
  88.         if currentInput != "" {
  89.             fmt.Println(currentInput)
  90.             currentInput = ""
  91.         }
  92.     }
  93. }
  94.  
RAW Paste Data