SALVE RAGAZZI CREDO DI AVER QUASI COMPLETATO L'IDE, LA DICHIARAZIONE DEI CASE L'HO ESEGUITA IN MODO CORRETTO? INOLTRE LA MOVIMENTAZIONE DEI MOTORI ATTRAVERSO L'EASY DRIVER E PULSANTI IN MANUALE E' STATA SCRITTA IN MODO CORRETTO ( LE POSIZIONI DEGLI STEP ALL'INTERNO DELL'AUTOMATICO SONO CASUALI NON PROVATI QUINDI) GRAZIE PER LA DISPONIBILITA'
IDE:
#include <Stepper.h>
const int stepsPerRevolution1 = 200;
const int stepsPerRevolution2 = 200;
Stepper myStepper1(200, 9, 10);
Stepper myStepper2(200, 3,4);
int pos1=0;
int pos2=0;
int stepCount1 = 0;
int stepCount2 = 0;
int stepmot1=10;
int stepmot2=4; //pin che va alla easy driver che controlla gli step del motore2
int dirmot1=9; //pin che va alla easy driver che controlla la direzione del motore1
int dirmot2=3; //pin che va alla easy driver che controlla la direzione del motore2
int destra1=14;
int destra2=21;
int sinistra1=15;
int sinistra2=20;
int PulsManuale=1;
int PulsAutomatico=0;
int StatoAutoMan=0;//auto=1, man=0
int ledautomatico=2;
int pulaccenslaser=32;
int PinA=31; //primo pin che arriva dal plc
int PinB=33; //secondo pin che arriva dal plc
int PinC=35; //terzo pin che arriva dal plc
int PinD=37; //quarto pin che arriva dal plc
int PinE=39; //quinto pin che arriva dal plc
int PinF=41; //sesto pin che arriva dal plc
int PinG=43; //settimo pin che arriva dal plc
int PinH=45; //ottavo pin che arriva dal plc
int laser=30; //pin che va collegato al relè per alimentazione laser
int ConvertToInt=0;
int ConvertToInt1=0;
int conversione(bool BIT0,bool BIT1 ,bool BIT2,bool BIT3,bool BIT4,bool BIT5,bool BIT6,bool BIT7);
bool BIT0=0,BIT1=0,BIT2=0,BIT3=0,BIT4=0,BIT5=0,BIT6=0,BIT7=0; // assegnazione come variabile booleana a bit
void setup()
{
Serial.begin(9600);
myStepper1.setSpeed(50);
myStepper2.setSpeed(50);
pinMode(stepmot1, OUTPUT);
pinMode(stepmot2, OUTPUT);
pinMode(dirmot1, OUTPUT);
pinMode(dirmot2, OUTPUT);
pinMode(PulsManuale, INPUT);
pinMode(PulsAutomatico, INPUT);
pinMode(ledautomatico, OUTPUT);
pinMode(destra1, INPUT);
pinMode(destra2, INPUT);
pinMode(sinistra1, INPUT);
pinMode(sinistra2, INPUT);
pinMode(PinA, INPUT); //dichiarazione pin come input
pinMode(PinB, INPUT); //dichiarazione pin come input
pinMode(PinC, INPUT); //dichiarazione pin come input
pinMode(PinD, INPUT); //dichiarazione pin come input
pinMode(PinE, INPUT); //dichiarazione pin come input
pinMode(PinF, INPUT); //dichiarazione pin come input
pinMode(PinG, INPUT); //dichiarazione pin come input
pinMode(PinH, INPUT); //dichiarazione pin come input
pinMode(laser, OUTPUT); //dichiarazione pin come uscita
pinMode(pulaccenslaser, INPUT); //dichiarazione pin come input
digitalWrite(dirmot1,LOW); //assegnazione stato zero come valore inziale
digitalWrite(stepmot2,LOW); //assegnazione stato zero come valore iniziale
digitalWrite(dirmot2,LOW); //assegnazione stato zero come valore iniziale
digitalWrite(stepmot1,LOW); //assegnazione stato zero come valore iniziale
digitalWrite(ledautomatico, LOW);
}
void loop()
{
//Gestione della modalità di funzionamento Automatica e Manuale
if (digitalRead(PulsManuale) == 1)
{
digitalWrite(ledautomatico,LOW);//funzionamento in manuale
StatoAutoMan=0;
}
else if (digitalRead(PulsAutomatico) == 1)
{
digitalWrite(ledautomatico,HIGH);//funzionamento in AUTOMATICO
StatoAutoMan=1;
}
//*****************************************************************************
if (StatoAutoMan==1){//inizio gestione in automatico
BIT0=digitalRead(PinA); //assegnazione bit a pin che arriva dal plc
BIT1=digitalRead(PinB); //assegnazione bit a pin che arriva dal plc
BIT2=digitalRead(PinC); //assegnazione bit a pin che arriva dal plc
BIT3=digitalRead(PinD); //assegnazione bit a pin che arriva dal plc
BIT4=digitalRead(PinE); //assegnazione bit a pin che arriva dal plc
BIT5=digitalRead(PinF); //assegnazione bit a pin che arriva dal plc
BIT6=digitalRead(PinG); //assegnazione bit a pin che arriva dal plc
BIT7=digitalRead(PinH); //assegnazione bit a pin che arriva dal plc
ConvertToInt1=conversione(BIT0,BIT1,BIT2,BIT3,BIT4,BIT5,BIT6,BIT7); //richiamo sottoprogramma conversione e assegnazione valore inizale a zero
if (ConvertToInt1 == 0)
{
digitalWrite(laser,LOW);
pos1;
pos2;
}
else
switch(ConvertToInt1) //comando switch
{
case 1: ConvertToInt1 == 40;
{
myStepper1.step(32);
myStepper2.step(40);
digitalWrite(laser,HIGH);
}
break;
case 2: ConvertToInt1 == 55;
{
myStepper1.step(50);
myStepper2.step(30);
digitalWrite(laser,HIGH);
}
break;
case 3: ConvertToInt1 == 80;
{
myStepper1.step(20);
myStepper2.step(45);
digitalWrite(laser,HIGH);
}
break;
default:;
}//fine switch
}//fine gestione in automatico
//*****************************************************************************
if (StatoAutoMan==0){//inizio gestione in manuale
digitalRead(pulaccenslaser);
digitalRead(destra1);
digitalRead(destra2);
digitalRead(sinistra1);
digitalRead(sinistra2);
if (digitalRead(sinistra1) == 1)
{
myStepper1.step(4);
Serial.print("steps:" );
Serial.println(stepCount1);
stepCount1++;
delay(10);
}
if (digitalRead(destra1) == 1)
{
myStepper1.step(4);
Serial.print("steps1:" );
Serial.println(stepCount1);
stepCount1--;
delay(10);
}
if (digitalRead(sinistra2) == 1)
{
myStepper2.step(4);
Serial.print("steps2:" );
Serial.println(stepCount2);
stepCount2++;
delay(10);
}
if (digitalRead(destra2) == 1)
{
myStepper2.step(4);
Serial.print("steps3:" );
Serial.println(stepCount2);
stepCount2--;
delay(10);
}
}//fine gestione in manuale
}
int conversione(bool BIT0,bool BIT1 ,bool BIT2,bool BIT3,bool BIT4,bool BIT5,bool BIT6,bool BIT7) //dichiarazione variabile booleana a bit
{
ConvertToInt=(BIT0*(1))+(BIT1*(2))+(BIT2*(4))+(BIT3*(8))+(BIT4*(16))+(BIT5*(32))+(BIT6*(64))+(BIT7*(128)); //conversione da binario a digitale
return ConvertToInt;
}