Glad it worked and that it seems to have helped.
It's okay for expository code, but it isn't "production quality". My
"real" code wraps this into a C++ class. Not entirely happy with it
yet. Still learning this robot stuff myself, and am trying to figure
out how to make it better.
giuliano
On Nov 29, 2009, at 1:17 PM, jgeidl wrote:
> Guiliano,
>
> I took your code, completed it so it would compile then added a few
> things to it for my own clarity and came up with what is belwo. Works
> great, thank you again! I used teh Copy for Forum tool and hope it
> uploads properly to the forum.
>
> [quote]
> [color=#777755]// Motor control from guiliano carlini[/color]
> [color=#777755]// added serial outs so I had some idea where I was[/
> color]
> [color=#777755]// added delays[/color]
>
> [color=#777755]// declarations[/color]
> [color=#996600]int[/color] right_enable_pin = 11;
> [color=#996600]int[/color] right_forward_pin = 12;
> [color=#996600]int[/color] right_reverse_pin = 13;
>
> [color=#996600]int[/color] left_enable_pin = 6;
> [color=#996600]int[/color] left_forward_pin = 7;
> [color=#996600]int[/color] left_reverse_pin = 8;
>
> [color=#CC6600]void[/color] [color=#993300][b]setup[/b][/color](){
> [color=#777755]// init[/color]
> [color=#996600]pinMode[/color](right_enable_pin, [color=#CC0000]
> OUTPUT[/color]);
> [color=#996600]pinMode[/color](right_forward_pin, [color=#CC0000]
> OUTPUT[/color]);
> [color=#996600]pinMode[/color](right_reverse_pin, [color=#CC0000]
> OUTPUT[/color]);
> [color=#996600]pinMode[/color](left_enable_pin, [color=#CC0000]
> OUTPUT[/color]);
> [color=#996600]pinMode[/color](left_forward_pin, [color=#CC0000]
> OUTPUT[/color]);
> [color=#996600]pinMode[/color](left_reverse_pin, [color=#CC0000]
> OUTPUT[/color]);
> [color=#996600]Serial[/color].[color=#996600]begin[/color](9600);
> }
>
>
>
> [color=#CC6600]void[/color] [color=#993300][b]loop[/b][/color](){
>
> [color=#777755]// Forward full speed[/color]
> [color=#996600]Serial[/color].[color=#996600]println[/color]
> ([color=#CC0000]"Forward full speed"[/color]); [color=#777755]//JMG[/
> color]
> [color=#996600]analogWrite[/color](right_enable_pin, 255);
> [color=#996600]digitalWrite[/color](right_forward_pin,
> [color=#CC0000]HIGH[/color]);
> [color=#996600]digitalWrite[/color](right_reverse_pin,
> [color=#CC0000]LOW[/color]);
> [color=#996600]analogWrite[/color](left_enable_pin, 255);
> [color=#996600]digitalWrite[/color](left_forward_pin, [color=#CC0000]
> HIGH[/color]);
> [color=#996600]digitalWrite[/color](left_reverse_pin, [color=#CC0000]
> LOW[/color]);
>
> [color=#996600]delay[/color](3000); [color=#777755]//JMG[/color]
>
> [color=#777755]// Forward half speed[/color]
> [color=#996600]Serial[/color].[color=#996600]println[/color]
> ([color=#CC0000]"Forward half speed"[/color]); [color=#777755]//JMG[/
> color]
> [color=#996600]analogWrite[/color](right_enable_pin, 128);
> [color=#996600]digitalWrite[/color](right_forward_pin,
> [color=#CC0000]HIGH[/color]);
> [color=#996600]digitalWrite[/color](right_reverse_pin,
> [color=#CC0000]LOW[/color]);
> [color=#996600]analogWrite[/color](left_enable_pin, 128);
> [color=#996600]digitalWrite[/color](left_forward_pin, [color=#CC0000]
> HIGH[/color]);
> [color=#996600]digitalWrite[/color](left_reverse_pin, [color=#CC0000]
> LOW[/color]);
>
> [color=#996600]delay[/color](3000); [color=#777755]//JMG[/color]
>
> [color=#777755]// Reverse half speed[/color]
> [color=#996600]Serial[/color].[color=#996600]println[/color]
> ([color=#CC0000]"Reverse half speed"[/color]); [color=#777755]//JMG[/
> color]
> [color=#996600]analogWrite[/color](right_enable_pin, 128);
> [color=#996600]digitalWrite[/color](right_forward_pin,
> [color=#CC0000]LOW[/color]);
> [color=#996600]digitalWrite[/color](right_reverse_pin,
> [color=#CC0000]HIGH[/color]);
> [color=#996600]analogWrite[/color](left_enable_pin, 128);
> [color=#996600]digitalWrite[/color](left_forward_pin, [color=#CC0000]
> LOW[/color]);
> [color=#996600]digitalWrite[/color](left_reverse_pin, [color=#CC0000]
> HIGH[/color]);
>
> [color=#996600]delay[/color](3000); [color=#777755]//JMG[/color]
>
> [color=#777755]// Spin clockwise half speed: left forward, right
> reverse[/color]
> [color=#996600]Serial[/color].[color=#996600]println[/color]
> ([color=#CC0000]"left forward, right reverse"[/color]);
> [color=#777755]//JMG[/color]
> [color=#996600]analogWrite[/color](right_enable_pin, 128);
> [color=#996600]digitalWrite[/color](right_forward_pin,
> [color=#CC0000]LOW[/color]);
> [color=#996600]digitalWrite[/color](right_reverse_pin,
> [color=#CC0000]HIGH[/color]);
> [color=#996600]analogWrite[/color](left_enable_pin, 128);
> [color=#996600]digitalWrite[/color](left_forward_pin, [color=#CC0000]
> HIGH[/color]);
> [color=#996600]digitalWrite[/color](left_reverse_pin, [color=#CC0000]
> LOW[/color]);
>
> [color=#996600]delay[/color](3000); [color=#777755]//JMG[/color]
>
> [color=#777755]// Turn right half speed: left forward, right coast[/
> color]
> [color=#996600]Serial[/color].[color=#996600]println[/color]
> ([color=#CC0000]"left forward, right coast"[/color]);
> [color=#777755]//JMG[/color]
> [color=#996600]analogWrite[/color](right_enable_pin, 0);
> [color=#996600]digitalWrite[/color](right_forward_pin,
> [color=#CC0000]LOW[/color]);
> [color=#996600]digitalWrite[/color](right_reverse_pin,
> [color=#CC0000]HIGH[/color]);
> [color=#996600]analogWrite[/color](left_enable_pin, 128);
> [color=#996600]digitalWrite[/color](left_forward_pin, [color=#CC0000]
> HIGH[/color]);
> [color=#996600]digitalWrite[/color](left_reverse_pin, [color=#CC0000]
> LOW[/color]);
>
> [color=#996600]delay[/color](3000); [color=#777755]//JMG[/color]
>
> [color=#777755]// Brake. Either HIGH/HIGH or LOW/LOW for the forward/
> reverse pins works.[/color]
> [color=#996600]Serial[/color].[color=#996600]println[/color]
> ([color=#CC0000]"Brake low/low"[/color]); [color=#777755]//JMG[/
> color]
> [color=#996600]analogWrite[/color](right_enable_pin, 255);
> [color=#996600]digitalWrite[/color](right_forward_pin,
> [color=#CC0000]LOW[/color]);
> [color=#996600]digitalWrite[/color](right_reverse_pin,
> [color=#CC0000]LOW[/color]);
> [color=#996600]analogWrite[/color](left_enable_pin, 255);
> [color=#996600]digitalWrite[/color](left_forward_pin, [color=#CC0000]
> LOW[/color]);
> [color=#996600]digitalWrite[/color](left_reverse_pin, [color=#CC0000]
> LOW[/color]);
>
>
> [color=#996600]delay[/color](5000); [color=#777755]//JMG[/color]
> }
>
> [/quote]
>
> On Nov 21, 11:11 pm, giuliano carlini <
giuli...@carlini.com> wrote:
>> I can give you arduino code for an SN754410NE. Not sure if that will
>> help. Code is off the top of my head, and not tested at all, but is
>> close to what I have in "real" code so it should be close.
>> "analogWrite" sets the pwm duty cycle. range is 0-255.
>>
>> // declarations
>> int right_enable_pin = 11;
>> int right_forward_pin = 12;
>> int right_reverse_pin = 13;
>>
>> int left_enable_pin = 6;
>> int left_forward_pin = 7;
>> int left_reverse_pin = 8;
>>
>> // init
>> pinMode(right_enable_pin, OUTPUT);
>> pinMode(right_forward_pin, OUTPUT);
>> pinMode(right_reverse_pin, OUTPUT);
>> pinMode(left_enable_pin, OUTPUT);
>> pinMode(left_forward_pin, OUTPUT);
>> pinMode(left_reverse_pin, OUTPUT);
>>
>> // Forward full speed
>> analogWrite(right_enable_pin, 255);
>> digitalWrite(right_forward_pin, HIGH);
>> digitalWrite(right_reverse_pin, LOW);
>> analogWrite(left_enable_pin, 255);
>> digitalWrite(left_forward_pin, HIGH);
>> digitalWrite(left_reverse_pin, LOW);
>>
>> // Forward half speed
>> analogWrite(right_enable_pin, 128);
>> digitalWrite(right_forward_pin, HIGH);
>> digitalWrite(right_reverse_pin, LOW);
>> analogWrite(left_enable_pin, 128);
>> digitalWrite(left_forward_pin, HIGH);
>> digitalWrite(left_reverse_pin, LOW);
>>
>> // Reverse half speed
>> analogWrite(right_enable_pin, 128);
>> digitalWrite(right_forward_pin, LOW);
>> digitalWrite(right_reverse_pin, HIGH);
>> analogWrite(left_enable_pin, 128);
>> digitalWrite(left_forward_pin, LOW);
>> digitalWrite(left_reverse_pin, HIGH);
>>
>> // Spin clockwise half speed: left forward, right reverse
>> analogWrite(right_enable_pin, 128);
>> digitalWrite(right_forward_pin, LOW);
>> digitalWrite(right_reverse_pin, HIGH);
>> analogWrite(left_enable_pin, 128);
>> digitalWrite(left_forward_pin, HIGH);
>> digitalWrite(left_reverse_pin, LOW);
>>
>> // Turn right half speed: left forward, right coast
>> analogWrite(right_enable_pin, 0);
>> digitalWrite(right_forward_pin, LOW);
>> digitalWrite(right_reverse_pin, HIGH);
>> analogWrite(left_enable_pin, 128);
>> digitalWrite(left_forward_pin, HIGH);
>> digitalWrite(left_reverse_pin, LOW);
>>
>> // Brake. Either HIGH/HIGH or LOW/LOW for the forward/reverse pins
>> works.
>> analogWrite(right_enable_pin, 255);
>> digitalWrite(right_forward_pin, LOW);
>> digitalWrite(right_reverse_pin, LOW);
>> analogWrite(left_enable_pin, 255);
>> digitalWrite(left_forward_pin, LOW);
>> digitalWrite(left_reverse_pin, LOW);
>>
>> In reality, the value to analogWrite would probably be based upon
>> sensor inputs. And be put through PID and ramp components.
>>
>> giuliano
>>
>> On Nov 21, 2009, at 8:48 PM, jgeidl wrote:
>>
>>
>>
>>> Alan,
>>
>>> Would you be interested in sharing a little code with me relavent to
>>> controlling your motor(s) with PWM or HPWM? I just ain't getting
>>> anywhere.
>>
>>> Jim, K6JMG
>>
>