Stap 4: Deel 3: Programing en schakeling ontwerp
#include < LiquidCrystal.h >
LiquidCrystal lcd (12, 11, 10, 5, 4, 3, 2); LCD op pennen 12, 11, 10, 5, 4, 3, 2.
int StartPin = 9; switch input
int motor1Pin = 7; H-brug been 1 (pin 2, 1A)
int motor2Pin = 6; H-brug been 2 (pin 7, 2A)
int enablePin = 8; H-brug inschakelen pin
int DirPin = 13; Motor richting selecteren
int DirSwCounter = 0;
int LastDirState = 15;
int Dir = 14;
int cansCrushed; Eerste nummer van blikjes geplette ingesteld op 0
VOID Setup
{
INITIALISEREN
pinMode (StartPin, INPUT);
pinMode (DirPin, INPUT);
pinMode (motor1Pin, OUTPUT);
pinMode (motor2Pin, OUTPUT);
pinMode (enablePin, OUTPUT);
digitalWrite (enablePin, laag);
LCD.begin (16, 2);
LCD.Print ("kunt Crusher MKII");
delay(3000);
LCD.Clear();
lcd.setCursor (0, 0);
LCD.Print("Crushed:");
lcd.setCursor (10, 0);
LCD.Print((int)cansCrushed);
lcd.setCursor (0, 1);
LCD.Print("Weight:");
lcd.setCursor (9, 1);
LCD.Print((int)cansCrushed*.034375);
pinMode (StartPin, INPUT);
pinMode (DirPin, INPUT);
pinMode (motor1Pin, OUTPUT);
pinMode (motor2Pin, OUTPUT);
pinMode (enablePin, OUTPUT);
digitalWrite (enablePin, laag);
cansCrushed = 0;
}
void loop
{
LEES PINS
int DirState = digitalRead(DirPin);
Als (LastDirState == LOW & & DirState == HIGH)
{
DirSwCounter ++;
}
LastDirState = DirState;
PROCES
Als (DirSwCounter % 2 == 0)
{
digitalWrite (Dir, laag);
cansCrushed ++;
} else {}
digitalWrite (Dir, hoge);
}
Als (digitalRead(StartPin) == HIGH & & digitalRead(Dir) == laag)
{
digitalWrite (enablePin, hoge);
digitalWrite (motor1Pin, hoge);
digitalWrite (motor2Pin, laag);
}
else if (digitalRead(StartPin) == HIGH & & digitalRead(Dir) == HIGH)
{
digitalWrite (enablePin, hoge);
digitalWrite (motor1Pin, laag);
digitalWrite (motor2Pin, hoge);
} else {}
digitalWrite (enablePin, laag);
}
}
Het schakelvoorbeeld voor de machine is hieronder weergegeven.
Voor dit ontwerp dat ik gebruikte Fritzing, is het vrij ontzagwekkend.
http://www.fritzing.org
De printplaat van dit ontwerp te bouwen, maar nog niet de schakelopties toevoegen aan.