Create Processing_Pi_GPIO.pde
This commit is contained in:
parent
9b21277690
commit
608034f8ca
1 changed files with 116 additions and 0 deletions
116
Pi_Processing_GPIO/Processing_Pi_GPIO/Processing_Pi_GPIO.pde
Normal file
116
Pi_Processing_GPIO/Processing_Pi_GPIO/Processing_Pi_GPIO.pde
Normal file
|
|
@ -0,0 +1,116 @@
|
||||||
|
// Processing on Raspberry Pi GPIO Example
|
||||||
|
// Author: Tony DiCola
|
||||||
|
//
|
||||||
|
// Note this code is for Processing and not Arduino
|
||||||
|
//
|
||||||
|
// See the guide for this sketch at:
|
||||||
|
// https://learn.adafruit.com/processing-on-the-raspberry-pi-and-pitft/overview
|
||||||
|
//
|
||||||
|
// Released under a MIT license:
|
||||||
|
// https://opensource.org/licenses/MIT
|
||||||
|
|
||||||
|
// Import hardware IO library.
|
||||||
|
import processing.io.*;
|
||||||
|
|
||||||
|
|
||||||
|
// Pin numbers for the LEDs and button connected to the Pi:
|
||||||
|
int redLEDPin = 22;
|
||||||
|
int greenLEDPin = 27;
|
||||||
|
int buttonPin = 17;
|
||||||
|
|
||||||
|
// Variables to hold the width and height of the buttons.
|
||||||
|
// This will be set based on the size of the screen.
|
||||||
|
int buttonWidth;
|
||||||
|
int buttonHeight;
|
||||||
|
|
||||||
|
// LED state, on or off (true or false).
|
||||||
|
boolean redLED = false;
|
||||||
|
boolean greenLED = false;
|
||||||
|
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
// Go fullscreen and hide the cursor.
|
||||||
|
fullScreen();
|
||||||
|
noCursor();
|
||||||
|
|
||||||
|
// Initialize LEDs as outputs.
|
||||||
|
GPIO.pinMode(redLEDPin, GPIO.OUTPUT);
|
||||||
|
GPIO.pinMode(greenLEDPin, GPIO.OUTPUT);
|
||||||
|
|
||||||
|
// Initialize button as input.
|
||||||
|
GPIO.pinMode(buttonPin, GPIO.INPUT);
|
||||||
|
|
||||||
|
// Turn the LEDs off.
|
||||||
|
GPIO.digitalWrite(redLEDPin, false);
|
||||||
|
GPIO.digitalWrite(greenLEDPin, false);
|
||||||
|
|
||||||
|
// Compute button width and height based on screen width and height.
|
||||||
|
buttonWidth = width/5;
|
||||||
|
buttonHeight = height/3;
|
||||||
|
|
||||||
|
// Default to drawing black lines around buttons.
|
||||||
|
stroke(0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void draw() {
|
||||||
|
// Check button state to see if it's pressed. Because there's a pull-up
|
||||||
|
// resistor to 3.3V the button pin will be at high level until the button
|
||||||
|
// is pressed and it drops to a low level.
|
||||||
|
if (GPIO.digitalRead(buttonPin) == GPIO.LOW) {
|
||||||
|
// Blue background when button pressed.
|
||||||
|
background(0, 0, 255);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Gray background when button isn't pressed.
|
||||||
|
background(100, 100, 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Draw red LED button.
|
||||||
|
if (redLED) {
|
||||||
|
// Fill button with red when on.
|
||||||
|
fill(255, 0, 0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Otherwise fill with white.
|
||||||
|
fill(255, 255, 255);
|
||||||
|
}
|
||||||
|
rect(buttonWidth, buttonHeight, buttonWidth, buttonHeight);
|
||||||
|
|
||||||
|
// Draw green LED button.
|
||||||
|
if (greenLED) {
|
||||||
|
// Fill button with red when on.
|
||||||
|
fill(0, 255, 0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Otherwise fill with white.
|
||||||
|
fill(255, 255, 255);
|
||||||
|
}
|
||||||
|
rect(3*buttonWidth, buttonHeight, buttonWidth, buttonHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
void mousePressed() {
|
||||||
|
// Check if red LED button pressed.
|
||||||
|
if (overRect(buttonWidth, buttonHeight, buttonWidth, buttonHeight)) {
|
||||||
|
// Button pressed, invert the red LED state and turn on/off the LED.
|
||||||
|
redLED = !redLED;
|
||||||
|
GPIO.digitalWrite(redLEDPin, redLED);
|
||||||
|
|
||||||
|
}
|
||||||
|
// Check if green LED button pressed.
|
||||||
|
if (overRect(3*buttonWidth, buttonHeight, buttonWidth, buttonHeight)) {
|
||||||
|
// Button pressed, invert the green LED state and turn on/off the LED.
|
||||||
|
greenLED = !greenLED;
|
||||||
|
GPIO.digitalWrite(greenLEDPin, greenLED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean overRect(int x, int y, int width, int height) {
|
||||||
|
// Check if the mouse is inside the provided box (defined by x, y position
|
||||||
|
// and width, height).
|
||||||
|
if (mouseX >= x && mouseX <= x+width &&
|
||||||
|
mouseY >= y && mouseY <= y+height) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue