![]() |
FAQ |
||
|
||||||||||||||||
|
|
|
| Examples for Processing (BETA) version 91+. If you have a previous version, use the examples included with your software. If you see any errors or have comments, please let us know. |
|
Binary Input by Mathias Dahlstrom <http://people.interaction-ivrea.it/m.dahlstrom> Example of a binary input from a serial device using serial communcation. This example takes input from an external serial device running at 19200 bps. Examples for the BX-24 microcontroller and the PIC 18F452 microcontroller (in PicBasic Pro) are given below. More information on microcontrollers can be found on the tutorial pages of Tom Igoe: http://itp.nyu.edu/tigoe/pcomp/ Because this program uses the serial port, it will not work within a web browser. Created 12 February 2003 Updated 21 March 2005, T. Igoe import processing.serial.*; |
||
|
|
// State of the circle drawing
boolean circleExpanding = true;
// Size of the circle
float circleSize = 0;
Serial port;
void setup()
{
size(200, 200);
// Print a list in case COM1 doesn't work out
//println("Available serial ports:");
//printarr(PSerial.list());
//port = new Serial(this, "COM1", 19200);
// Uses the first available port
port = new Serial(this, Serial.list()[0], 19200);
noStroke();
fill(204);
ellipseMode(CENTER_RADIUS);
}
// The loop checks for what state the circle should be
// drawn into and performs the drawing.
void draw()
{
background(0);
while (port.available() > 0) {
int value = port.read();
serialEvent(value);
}
if(circleExpanding) {
ellipse(width/2, height/2, circleSize, circleSize);
circleSize += 0.5;
}else{
ellipse(width/2, height/2, circleSize, circleSize);
circleSize -= 0.5;
}
if(circleSize > width/2) {
circleSize = width/2;
}
if(circleSize < 10) {
circleSize = 10;
}
}
// Function is called when ever a new byte from the
// BX-24 is avaliable for reading.
// It controls what input the user is generating and
// sets the corresponding drawing mode.
void serialEvent(int serial)
{
// Checks the ASCII code sent from the basicX chip.
// '48' is the code for '0' and '49' is the code for '1'
if(serial == 48) {
circleExpanding = false;
}
if(serial == 49) {
circleExpanding = true;
}
println(serial);
}
// / / / / / / / / / / / / / / / / / / /
// Code for the BX-24 Microcontroller
/*
Option Explicit
dim inputVal as BYTE
dim lastVal as BYTE
Public Sub Main()
Call PutPin(13,1)
lastVal = 1
Do
inputVal = GetPin(13)
If (inputVal <> lastVal) Then
If(inputVal = 0) Then
debug.print "0"
End if
If(inputVal = 1) Then
debug.print "1"
End if
End if
lastVal = inputVal
Loop
End Sub
*/
// Code for the PIC 18F452 in PicBasic Pro:
/*
ButtonStateVar var byte
LastButtonStateVar var byte
ButtonCountVar var byte
Input portc.5
ButtonCountvar = 0
main:
ButtonStateVar = portc.5
' if the button isn't the same as it was last time through
' the main loop, then you want to do something:
if buttonStateVar <> lastButtonStateVar then
if buttonStateVar = 1 then
' the button went from off to on
ButtonCountVar = ButtonCountVar + 1
serout2 portc.6, 16416, ["1"]
high portb.0
else
low portb.0
' the button went from on to off
serout2 portc.6, 16416, ["0"]
endif
' store the state of the button for next check:
lastButtonStateVar = buttonStateVar
endif
goto main
*/
|
| |
||
| Processing is an open project initiated by Ben Fry and Casey Reas | ||
| © Info |