Society of Robots - Robot Forum

Software => Software => Topic started by: Roboteccan on November 10, 2010, 08:12:23 PM

Title: how work pin input and output pin in axon microcontroller?
Post by: Roboteccan on November 10, 2010, 08:12:23 PM
hi, I have a big problem with input pin and output pin, when I put this code all work, I push switch and the led is turn off and when I dont push switch the led is turn on, this is the code.

#include "sys/axon.h"
#include "C:\WebbotLib\iopin.h"

void appInitHardware(void){
pin_make_output(C0,FALSE);
pin_make_input(A0,FALSE);
}

TICK_COUNT appInitSoftware(TICK_COUNT loopStart){
    return 0;
}

TICK_COUNT appControl(LOOP_COUNT loopCount, TICK_COUNT loopStart) {

if(pin_is_high(A0)){
    pin_low(C0);
}else{
    pin_high(C0);
}
return 1;
}

the problem become when you change the pin_low(C0); in the "else" and the pin_high(C0); in the "if", when the program get started there are a problem, because the program get started the led turn on(when the led must turn off), and when I push the switch the led shine to much(a lot) and when I dont push switch the led return to the original shine(less shine), this is the code, when that happen.

if(pin_is_high(A0)){
    pin_high(C0);
}else{
    pin_low(C0);
}

Title: Re: how work pin input and output pin in axon microcontroller?
Post by: Admin on November 11, 2010, 10:24:55 AM
The reason is because your mcu high voltage is 5V, but your LED is attached to the 6V+ battery.

So when C0 is low, the LED sees 6V-0V = 6V (on).

And when C0 is hi, the LED sees 6V-5V = 1V (on).

It'll be on either way, just not as bright when C0 is high.

So to correct this, you need to use a 5V voltage pin on the regulated bus (the ADC headers) for the LED.