Back again
Håller på med att styra en kanal till.
Har en till fråga, vet inte riktigt hur jag skall skicka ut värdet för att den skall veta vilken fläkt jag vill styra.
Jag har gjort som så att jag har 2st fläktar, Första kallar jag "a" och den andra kallar jag "d".
Värde mellan 0 - 9 ( beroende på hastighet).
startar jag upp AVR'en och terminal och skickar..
a1 - så gör den som den skall, fläkt ett startar på låg speed.
Sen kan jag hålla på så upp till "a9" och sen ner igen.
samma gäller för fläkt "d".
d1,d2,d3... osv sen ner till noll igen och det fungerar.
Men, nu till det kluriga.
säg att jag skickar "a5" (fläkt "a" på halvfart) så gör den det.
skickar jag sen t.ex "d5" (fläkt "d" på halvfart) då ballar allt ur.
summa, man kan inte styra dom samtidigt då sturlar det ihop sig åt alla håll och kanter.
kod...
Kod: Markera allt
void PWMOutputCH1(uint8_t duty)
{
OCR0=duty;
}
void PWMOutputCH4(uint8_t duty)
{
OCR2=duty;
}
char USARTReadChar()
{
//Wait untill a data is available
while(!(UCSRA & (1<<RXC)))
{
//Do nothing
}
//Now USART has got data from host
//and is available is buffer
return UDR;
}
void main() {
char channel;
char data;
int outval;
int FanCH;
USARTInit(51);
InitPWM();
//Do this forever
while(1)
{
//Läser vilken kanal det handlar om. a,b,c eller d
FanCH = USARTReadChar();
// 97 = 'a'
if (FanCH==97)
{
//Gå till kanal a
channel='a';
}
// 98 = 'b'
else if (FanCH==98)
{
//Gå till kanal b
channel='b';
}
// 99 = 'c'
else if (FanCH==99)
{
//Gå till kanal c
channel='c';
}
// 100 = 'd'
else if (FanCH==100)
{
//Gå till kanal d
channel='d';
_delay_ms(100);
}
data = USARTReadChar();
if (data==48)
{
outval=0;
}
else if (data==49)
{
outval=30;
}
else if (data==50)
{
outval=130;
}
else if (data==51)
{
outval=160;
}
else if (data==52)
{
outval=190;
}
else if (data==53)
{
outval=210;
}
else if (data==54)
{
outval=225;
}
else if (data==55)
{
outval=235;
}
else if (data==56)
{
outval=245;
}
else if (data==57)
{
outval=255;
}
switch (channel)
{
case 'a':
PWMOutputCH1(outval);
break;
case 'b':
//PWMOutputCH2(outval);
case 'c':
//PWMOutputCH3(outval);
case 'd':
PWMOutputCH4(outval);
break;
return;
}
_delay_ms(100);
}
}