Untitled

                Never    
C
       
// Szablon kodu dla modelu linii technologicznej (F107)

#define o0 46
#define o1 47
#define o2 48
#define o3 49
#define o4 50
#define o5 51
#define o6 52
#define o7 53
#define k13 13

#define in0 38
#define in1 39
#define in2 40
#define in3 41
#define in4 42
#define in5 43
#define in6 44
#define in7 45

void setup() {
  // put your setup code here, to run once:

pinMode(k13, OUTPUT);

pinMode(o0, OUTPUT);
pinMode(o1, OUTPUT);
pinMode(o2, OUTPUT);
pinMode(o3, OUTPUT);
pinMode(o4, OUTPUT);
pinMode(o5, OUTPUT);
pinMode(o6, OUTPUT);
pinMode(o7, OUTPUT);

pinMode(in0, INPUT);
pinMode(in1, INPUT);
pinMode(in2, INPUT);
pinMode(in3, INPUT);
pinMode(in4, INPUT);
pinMode(in5, INPUT);
pinMode(in6, INPUT);
pinMode(in7, INPUT);

}


char LED;
unsigned long stime;

char SKJ; 
char EM1; 
char EM2;
char EM3;
char SLP;
char AF;
char ST;
char F1,F2,F3,FKJ1,FKJ2,MAN;

 
//////////////////////////////////////////////////////////////////
int tim=30, stan=1;



/////////////////////////////////////////////////////////////////


void loop() {
 stime=millis();

// odczyt wejść  
 F1=digitalRead(in0);
 F2=digitalRead(in1);
 F3=digitalRead(in2);
 FKJ1=digitalRead(in3);
 FKJ2=digitalRead(in4);
 MAN=digitalRead(in5);

 

///////////////////////////////////////////////////////////////
// kod uĹźytkownika
// UWAGA: pętla pracuje z cyklem 10ms (dla 1s wartość timera powinna wynosić 100)

switch(stan){

	case 1: SLP=1; EM1=0; EM2=0; EM3=0; SKJ=0; ST=0; AF=1;
		if(!tim) stan = 2;
		break;
	case 2: SLP=0; EM1=0; EM2=0; EM3=0; SKJ=0; ST=1; AF=1;
		if(F1) stan = 3;
		break;
	case 3: SLP=0; EM1=0; EM2=0; EM3=0; SKJ=0; ST=1; AF=1;
		if(!F1){tim = 300; stan=4;}
		break;
	case 4: SLP=0; EM1=1; EM2=0; EM3=0; SKJ=0; ST=0; AF=1;
		if(!tim) stan = 5;
		break;
	case 5: SLP=0; EM1=0; EM2=0; EM3=0; SKJ=0; ST=1; AF=1;
		if(F2) stan = 6;
		break;
	case 6: SLP=0; EM1=0; EM2=0; EM3=0; SKJ=0; ST=1; AF=1;
		if(!F2){tim=300; stan=7;}
		break;
	case 7: SLP=0; EM1=0; EM2=1; EM3=0; SKJ=0; ST=0; AF=1;
		if(!tim) stan = 8;
		break;
	case 8: SLP=0; EM1=0; EM2=0; EM3=0; SKJ=0; ST=1; AF=1;
		if(F3) stan = 9;
		break;
	case 9: SLP=0; EM1=0; EM2=0; EM3=0; SKJ=0; ST=1; AF=1;
		if(!F3){tim = 300; stan = 10;}
		break;
	case 10: SLP=0; EM1=0; EM2=0; EM3=1; SKJ=0; ST=0; AF=1;
		if{!tim} stan = 11;
		break;
	case 11: SLP=0; EM1=0; EM2=0; EM3=0; SKJ=0; ST=1; AF=1;
		if(FKJ1) stan = 12;
		break;
	case 12: SLP=0; EM1=0; EM2=0; EM3=0; SKJ=0; ST=1; AF=1;
		if(FKJ1&&FKJ2){tim=500; stan = 13;}
		else if(!FKJ1){tim=400; stan = 14;}
			break;
	case 13: SLP=0; EM1=0; EM2=0; EM3=0; SKJ=1; ST=1; AF=1;
		if(!tim) {tim = 300; stan = 1;}
		break;
	case 14: SLP=0; EM1=0; EM2=0; EM3=0; SKJ=0; ST=1; AF=1;
		if(!tim) {tim = 300; stan = 1;}
		break;

}

	if(tim) --tim;

///////////////////////////////////////////////////////////////



// aktualizacja wyjść
digitalWrite(o0,SKJ);
digitalWrite(o1,EM3);
digitalWrite(o2,EM2);
digitalWrite(o3,EM1);
digitalWrite(o4,SLP);
digitalWrite(o5,AF);
digitalWrite(o6,ST);

digitalWrite(k13,LED);

// oczekiwanie na koniec cyklu
// UWAGA: cykl trwa 10ms
while(millis()-stime<10);

}

Raw Text