Untitled

                Never    
C
       
// Szablon kodu dla modelu widny (F107)

#define i0 A2
#define i1 12
#define i2 11
#define i3 10
#define i4 9
#define i5 8
#define i6 A3
#define i7 A4
#define o0 7
#define o1 6
#define o2 5
#define o3 4
#define o4 3
#define o5 2
#define o6 A0
#define o7 A1
#define k13 13

void setup() {

 pinMode(k13, OUTPUT);
 pinMode(i0, INPUT);
 pinMode(i1, INPUT);
 pinMode(i2, INPUT);
 pinMode(i3, INPUT);
 pinMode(i4, INPUT);
 pinMode(i5, INPUT);
 pinMode(i6, INPUT);
 pinMode(i7, INPUT);
 pinMode(o0, OUTPUT);
 pinMode(o1, OUTPUT);
 pinMode(o2, OUTPUT);
 pinMode(o3, OUTPUT);
 pinMode(o4, OUTPUT);
 pinMode(o5, OUTPUT);
 pinMode(o6, OUTPUT);
 pinMode(o7, OUTPUT);
}

char LED; // LED na pĹ?ytce ARDUINO
unsigned long stime;

char KZ1,KZ2,KZ3,KZ4;
char P1,P2,P3,P4;
char PGA,PDA;
char LED1,LED2,LED3,LED4;


//////////////////////////////////////////////////////////////////
// deklaracje uĹźytkownika

char stan=0,tim;

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


void loop() {
 stime=millis();

 // odczyt wejĹ?Ä? 
 P1=!digitalRead(i0);
 P2=!digitalRead(i1);
 P3=!digitalRead(i2);
 P4=!digitalRead(i3);
 KZ1=!digitalRead(i4);
 KZ2=!digitalRead(i5);
 KZ4=!digitalRead(i6);
 KZ3=!digitalRead(i7);



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


switch(stan){

	case 0:
		if(!KZ1){ PGA=0;PDA=1; }
		else if(KZ1){ PGA=0;PDA=0;stan=8; }
		break;
	case 1:   PGA=1;PDA=0;
       		if(P1) LED1=1;
        	if(P2) LED2=1;
        	if(P3) LED3=1;
        	if(P4) LED4=1;
        	if(KZ2&&LED2) {	tim=3000;stan=3; }
        	if(KZ3&&LED3) {	tim=3000;stan=4; }
        	if(KZ4&&LED4) {	tim=3000;stan=7; }
       		break;
	case 2: PGA=0;PDA=1;
        	if(P4) LED4=1;
        	if(P3) LED3=1;
        	if(P2) LED2=1;
        	if(P1) LED1=1;
        	if(KZ3&&LED3) {	tim=3000;stan=6; }
       		if(KZ2&&LED2) { tim=3000;stan=5; }
       	 	if(KZ1&&LED1) {	tim=3000;stan=8; }
       		break;
	case 3: PGA=0; PDA=0; LED2=0;
        	if(P1) LED1=1;
        	if(P3) LED3=1;
        	if(P4) LED4=1;
        	if(!P2&&(LED3||LED4)&&!tim) stan=1;
        	if(!P2&&!LED3&&!LED4&&!tim&&LED1) stan=2;
       		break;
	case 4: PGA=0; PDA=0; LED3=0;
        	if(P1) LED1=1;
        	if(P2) LED2=1;
        	if(P4) LED4=1;
        	if(!P3&&LED4&&!tim) stan=1;
        	if(!P3&&!LED4&&!tim&&(LED1||LED2)) stan=2;
        	break;
	case 5: PGA=0; PDA=0;LED2=0;
        	if(P2) LED2=1;
        	if(P3) LED3=1;
        	if(P4) LED4=1;
        	if(!P3&&LED1&&!tim) stan=2;
        	if(!P3&&!LED1&&!tim&&(LED3||LED4)) stan=1;
        	break;
	case 6: PGA=0;PDA=0;LED3=0;
        	if(P1) LED1=1;
        	if(P2) LED2=1;
       		if(P4) LED4=1;
        	if(!P3&&!tim&&(LED1||LED2)) stan=2;
        	if(!P3&&!LED1&&!LED2&&!tim&&LED4) stan=1;
        	break;
	case 7: PGA=0;PDA=0;LED4=0;
        	if(P1) LED1=1;
       		if(P2) LED2=1;
        	if(P3) LED3=1;
        	if(!P4&&!tim&&(LED1||LED2||LED3)) stan=2;
        	break;
	case 8: PGA=0;PDA=0;LED1=0;
        	if(P2) LED2=1;
        	if(P3) LED3=1;
        	if(P4) LED4=1;
        	if(!P1&&!tim&&(LED2||LED3||LED4)) stan=1;
       		break;

}

if(tim)--tim;



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


// aktualizacja wyjĹ?Ä?
 digitalWrite(k13,LED);

 digitalWrite(o0,LED1);
 digitalWrite(o1,LED2);
 digitalWrite(o2,LED4);
 digitalWrite(o3,LED3);                                                                                                                                                                                                                  
 digitalWrite(o4,PDA);
 digitalWrite(o5,PGA);
 //digitalWrite(o6,pp6);
 //digitalWrite(o7,pp7);
 
 // oczekiwanie na koniec cyklu
// UWAGA: cykl trwa 10ms
 while(millis()-stime<10);


}

Raw Text