Go Down

Topic: dubbi sulla funzione millis() (Read 1 time) previous topic - next topic

ƎR

#30
Dec 29, 2011, 06:42 pm Last Edit: Dec 30, 2011, 07:16 am by er_like_no_other Reason: 1
questo codice è il codice, forse devo fargli qualche ritocco sulle variabili usate nelle funzioni, ma non dovrebbe cambiare molto...
non è per arduino è per un ATtiny84... pare che funzioni, ma è dificile dirlo con certezza perchè 50ms non sono facili da notare a occhio :)

Code: [Select]
#include <NewSoftSerial.h>
NewSoftSerial TinySerial(0,1);

byte x=0, y=0, value[3];
boolean er=0;
unsigned long time[4];

void setup()
{
TinySerial.begin(9600);
DDRA=B00111111;  // EN1=3; EN2=4; ballUS=5; LUS=6; RUS=7; FUS=8; BUS=9; LROut=10;
DDRB=B110;       // RX=0; TX=1; BallOut=2;
for(y=0;y<4;y++)time[y]=0;
y=0;
}

void loop()
{
if((PINA>=B01000000)&&(er==0))
{
 output:
 x=PINA / B01000000;
 TinySerial.print(value[x-1]);
 er=1;
}

else
{
 while(millis()<=time[y])
 {
  if(PINA<B01000000)er=0;
  else if((PINA>=B01000000)&&(er==0))goto output;
 }
 time[y]=millis()+50;
 
 switch(y)
 {
  case 0:{BallUS();                y=1;}break;
  case 1:{value[2]=LRUS(value[2]); y=2;}break;
  case 2:{value[1]=FUS();          y=3;}break;
  case 3:{value[0]=BUS();          y=0;}break;
 }
 
 if(PINA<B01000000)er=0;
}
}

void BallUS()
{
unsigned int v;

PORTA=PORTA | B100000;
delayMicroseconds(10);
PORTA=PORTA & B1;

DDRA=B011111;
v=pulseIn(5,HIGH,1000);

v=v/58;
if((v!=0)&&(v<=10))v=1;
else v=0;
digitalWrite(2,v);
}

byte BUS()
{
unsigned int v;

PORTA=PORTA | B10;    
delayMicroseconds(10);
PORTA=PORTA & B1;

DDRA=B111101;
v=pulseIn(9,HIGH,17000);

if(v==0)v=17000;
v=v/58;
if(v>255)v=255;
return v;
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy