Jag har lagt till att den piper också när stoppsensorn tar i:
Kod: Markera allt
// ---- MOTOR CONST INTARNA ----
const int controlPin1 = 7;
const int controlPin2 = 6;
const int enablePin = 9;
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// DESSA TILLHÖR GRAFIK O PULSRÄKNINGEN
char lineText[]=" Tjena! ";
int sensor01;
int sensor02;
int stepOld;
int step;
long PulseCount;
// ---- MOTOR TEST INT ---------------------------------------------------------------------------------
int intest1Pin = 4; // KNAPP - GRÅ - Går åt plus hållet - UPP
int intest2Pin = 5; // KNAPP - GRÖN - Går åt minus hållet - NER
int intest3Pin = 11; // KNAPP - BLÅ - Ej något än
int stopsensor1Pin = 12; // SENSOR - GRÖN - Enskild sensor
int val = 0;
// ---- Högtalare
int tonePin = 13;
// DESSA TILLHÖR GRAFIK O PULSRÄKNINGEN
// initialize the library with the numbers of the interface pins
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// DESSA TILLHÖR GRAFIK O PULSRÄKNINGEN
#define SENSOR_A 3
#define SENSOR_B 2
// DESSA TILLHÖR GRAFIK O PULSRÄKNINGEN
void checkState(){
sensor01 = digitalRead(SENSOR_A);
sensor02 = digitalRead(SENSOR_B);
if(sensor01 == 1 && sensor02 == 1){
step = 0;
if(stepOld == 1){
PulseCount--;
}
if(stepOld == 3){
PulseCount++;
}
stepOld = 0;
}
if(sensor01 == 0 && sensor02 == 1){
step = 1;
if(stepOld == 2){
PulseCount--;
}
if(stepOld == 0){
PulseCount++;
}
stepOld = 1;
}
if(sensor01 == 0 && sensor02 == 0){
step = 2;
if(stepOld == 3){
PulseCount--;
}
if(stepOld == 1){
PulseCount++;
}
stepOld = 2;
}
if(sensor01 == 1 && sensor02 == 0){
step = 3;
if(stepOld == 0){
PulseCount--;
}
if(stepOld == 2){
PulseCount++;
}
stepOld = 3;
}
}
// VOID SETUP - KÖRS BARA EN GÅNG I BÖRJAN, EN FÖRBEREDELSE, LOOP ÄR EXEKVERING OCH GÖR DET MESTA JOBBET
// DESSA TILLHÖR GRAFIK O PULSRÄKNINGEN
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" ");
attachInterrupt(0, checkState, CHANGE);
attachInterrupt(1, checkState, CHANGE);
PulseCount = 0;
// TEST MOTOR - VOID SETUP ---------------------------------------------------------------------------------
pinMode(intest1Pin, INPUT); //Declarar denna som input UNO input är 4 grå
pinMode(intest2Pin, INPUT); //Declarar denna som input UNO input är 5 grön
pinMode(intest3Pin, INPUT); //Declarar denna som input UNO input är 11 blå
pinMode(stopsensor1Pin, INPUT); //Declarar denna som input UNO input är 12 grön
//
pinMode(tonePin, OUTPUT);
// ---- HOY LCD start presentationen
{
lcd.setCursor(2, 0);
lcd.print("HOY!");
delay(500);
// lcd.clear();
lcd.setCursor(11, 1);
lcd.print("9");
delay(100);
lcd.setCursor(11, 1);
lcd.print("90");
delay(100);
lcd.setCursor(11, 1);
lcd.print("90E");
delay(900);
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Prototype 1.0");
delay(200);
lcd.setCursor(0, 1);
lcd.print("www.");
delay(100);
lcd.setCursor(12, 1);
lcd.print(".se");
delay(100);
lcd.setCursor(0, 1);
lcd.print("www.HOY.se");
delay(250);
lcd.setCursor(0, 1);
lcd.print("www.HOY.se");
delay(800);
lcd.clear();
}
}
void loop()
{
// DESSA TILLHÖR GRAFIK O PULSRÄKNINGEN
// LCD set the cursor to column 0, line 1 (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 0);
lcd.print("Pulses:");
if(PulseCount > -1){
lcd.print(" ");
}
if(PulseCount < 10 && PulseCount > -10){
lcd.print(" ");
}
if(PulseCount < 100 && PulseCount > -100){
lcd.print(" ");
}
lcd.print(PulseCount);
if(sensor01 == 1){
lcd.print(" HIGH");
}
else{
lcd.print(" LOW ");
}
lcd.setCursor(0, 1);
if(sensor02 == 1){
lcd.print(" HIGH");
}
else{
lcd.print(" LOW ");
}
// ---- MOTORNS VOID LOOP - KNAPPSTYRNINGEN TILL MOTORERNA ----
// intest 1 går UPP
// intest 2 går NER
// stopsensor1Pin heter stoppsensorn
{
// ---- UPP ----
val = digitalRead(intest1Pin); // UPP - Läser input värde
if (val == HIGH) { // Checkar om knappen trycks
digitalWrite(controlPin1, HIGH);
digitalWrite(controlPin2, LOW);
// Dessa 3 rader visar text när nedåtknapp trycks NED - delay ställer flimret men slöar också ner visningen av pulsräkningen ------
lcd.setCursor(0, 1);
lcd.print("Up");
delay(50);
}
// ---- NER ----
else {
val = digitalRead(intest2Pin); // NER - Läser input värde
if (val == HIGH) { // Checkar om knappen trycks
digitalWrite(controlPin1, LOW);
digitalWrite(controlPin2, HIGH);
// Detta är sensorn som, om täcks, hindrar motorn från att åka ner
{
val = digitalRead(stopsensor1Pin); // Sensorn som stoppar motorn
if (val == HIGH) {
digitalWrite(controlPin2, LOW);
// Dessa 3 rader visar STOP när sensorn stoppar nedgång - delay ställer flimret men slöar också ner visningen av pulsräkningen ------
lcd.setCursor(0, 1);
lcd.print("STOP");
delay(50);
// Dessa tre rader nedanför gör pipljudet när stopsensorn (ovan) täcks
tone(tonePin, 880, 125);
delay(125);
noTone(tonePin);
}
// Dessa 3 rader visar DOWN när nedåtknapp trycks NED - delay ställer flimret men slöar också ner visningen av pulsräkningen ------
lcd.setCursor(0, 1);
lcd.print("Down");
delay(50);
}
// Dessa två rader stoppar motorn när man släpper knappen
} else {
digitalWrite(controlPin1, LOW);
digitalWrite(controlPin2, LOW);
}
}
}
}