Stránka 1 z 1

Picaxe a Rotary Encoder

Napsal: 12 zář 2019, 11:36
od Luděk
Zdravím a kdo ví, ať odpoví...
Vezmu jakékoli Arduino, připojím Rotary Encoder a použiji jednoduchý program a šlape jak hodinky. BEZ CHYBY
ALE :
Udělám stejný prográmek - úplně stejný co se týče významu instrukcí - pro Picaxe a on kecá a kecá a kecá,
Máte někdo nějaké vysvětlení proč to Picaxe nezvládá?
Napadla mě prasárnička - vezmu Arduino MINI a jeho výstupy pošlu do Picaxe :-) Ale to už je moc :-)
Hlavně mi neraďte, proč rovnou na celou konstrukci nepoužiju Arduino - no protože ho neumím :-)
Má aplikace je moc složitá a v Basicu to umím :-)
Ale neřešte PROČ chci Picaxe, ale spíš, proč to je tak nespolehlivé.

Když mi někdo naučíte, jak sem vložit kód obou programů, vložím je sem.

Re: Picaxe a Rotary Encoder

Napsal: 12 zář 2019, 12:47
od Dex
Na vložení kódu je pátá ikonka zleva nad editačním polem příspěvku ;)

Re: Picaxe a Rotary Encoder

Napsal: 12 zář 2019, 13:11
od Luděk
Tak toto je kod pro Arduino :

Kód: Vybrat vše

 
 #define outputA 6
 #define outputB 7
 int counter = 0; 
 int aState;
 int aLastState;  
 void setup() { 
   pinMode (outputA,INPUT);
   pinMode (outputB,INPUT);
   
   Serial.begin (9600);
   aLastState = digitalRead(outputA);   }     //ulozi si aktualni pozici  
 
 void loop() { 
   aState = digitalRead(outputA);         	//precte "current" stav vstupu A
   if (aState != aLastState){                	//pokud se vstup A zmenil, je to pulz     
     if (digitalRead(outputB) != aState) {   	//pokud se vstup A lisi od vstupu B,
       counter ++;                           		//tocime se vpravo
     } else {  counter --;    }             		//jinak vlevo
     Serial.print("Position: ");
     Serial.println(counter); } 
   aLastState = aState;                      		//Update noveho stavu vstupu A 
 }

A toto je kod pro PICAXE :

Kód: Vybrat vše

#Picaxe 08M2
#no_data
setfreq M8

symbol LCD	=0
symbol BAUD	=N9600_8
             
symbol outA	= pinc.3
symbol outB	= pinc.4


symbol aState  = b10
symbol aLast   = b11
symbol counter = b12




INIT:		aLast = outA
		counter = 0


START:	aState = outA
		 if aState <> aLast  then 
			if outB <> aState  then inc counter
		 	else dec counter
		   	endif
		   		
	  	   serout LCD,BAUD,($FE,$80,"Counter : ", #counter,"   ")
		 endif
		
		aLast = aState	  
		
		goto START

Re: Picaxe a Rotary Encoder

Napsal: 12 zář 2019, 17:04
od kolbaba71
Má aplikace je moc složitá a v Basicu to umím
Já v Basicu taky celkem umím a tak používám Bascom, což je klon Basicu pro Atmely. A Arduino používám jako redukci na mcu.

Re: Picaxe a Rotary Encoder

Napsal: 12 zář 2019, 17:13
od Vladimir66
Nepomohlo by Setfreq m16 nebo m32 ?

Re: Picaxe a Rotary Encoder

Napsal: 12 zář 2019, 18:46
od Luděk
Vladimire, měl jsi pravdu. Při 32MHz Picaxe šlape taky dobře. Díky.
Teda toto forum je moc dobrá věc...