Arduino/kraan project
20 berichten
• Pagina 1 van 2 • 1, 2
Arduino/kraan project
Ik ben nieuw op dit forum maar wil even mijn project laten zien.
Het betreft een model van een kraan die aangestuurd word door een arduino mega 2560 met twee L298N H bridge een HC 05 en de arduino BT app.
Google maar even op arduino kraan project.
De sketch(die met hulp is gemaakt) kan ik je eventueel toe sturen.
Nu ben ik met een nieuw project begonnen: Waarbij 5 dc motoren van waarvan 4 van 12 volt en 1 van 5 volt aangestuurd moet worden zonder bluetooth .
Inmiddels heb ik in het bezit een mega 2560 en een aantal L298N H bridge
// Motor A rechts om draaien 0,5 seconde. (knijper dicht )
Motor B rechts om draaien 1 seconde ( grote giek omhoog)
Motor C rechts om draaien 1,5 seconde (zwenk rechts)
Motor D rechts om draaien 0,5 seconde (kleine giek omhoog)
Motor E rechts om draaien 0,5 seconden ( 5 v motor)
Motor A links om draaien 0,5 seconde (knijper open)
Motor C links om draaien 1,5 seconden (zwenk links)
Motor D links om draaien 0,5 seconden ( kleine giek omlaag )
Motor B links om draaien 1 seconde (grote giek omlaag)
Motor E moet na 5 stappen naar rechts 1 stap van 2,5 seconden naar links.
Misschien is het een onmogelijke zaak maar zal iemand hier een sketch voor hebben of kunnen maken.
Ik wacht het antwoord af.
Het betreft een model van een kraan die aangestuurd word door een arduino mega 2560 met twee L298N H bridge een HC 05 en de arduino BT app.
Google maar even op arduino kraan project.
De sketch(die met hulp is gemaakt) kan ik je eventueel toe sturen.
Nu ben ik met een nieuw project begonnen: Waarbij 5 dc motoren van waarvan 4 van 12 volt en 1 van 5 volt aangestuurd moet worden zonder bluetooth .
Inmiddels heb ik in het bezit een mega 2560 en een aantal L298N H bridge
// Motor A rechts om draaien 0,5 seconde. (knijper dicht )
Motor B rechts om draaien 1 seconde ( grote giek omhoog)
Motor C rechts om draaien 1,5 seconde (zwenk rechts)
Motor D rechts om draaien 0,5 seconde (kleine giek omhoog)
Motor E rechts om draaien 0,5 seconden ( 5 v motor)
Motor A links om draaien 0,5 seconde (knijper open)
Motor C links om draaien 1,5 seconden (zwenk links)
Motor D links om draaien 0,5 seconden ( kleine giek omlaag )
Motor B links om draaien 1 seconde (grote giek omlaag)
Motor E moet na 5 stappen naar rechts 1 stap van 2,5 seconden naar links.
Misschien is het een onmogelijke zaak maar zal iemand hier een sketch voor hebben of kunnen maken.
Ik wacht het antwoord af.
Advertisement
Re: Arduino/kraan project
Allereerst je grote kraan:
Ik zou je programma graag willen zien , en denk eens na over snelheidsregeling, (met PWM)
je grijperkraan kan ook wel, (zelf doen is ook goed te doen zeker met mblock.
Maar het resultaat zal niet echt prima werken omdat er verschil in snelheden zal zijn.
die L298 bruggen werken overigens niet best op 5 Volt motorspanning dus simpeler is dan 12 Volt en dan de PWM klein zetten(of de stroombegrenzing gebruiken), dan werkt het perfect.
Ik zou je programma graag willen zien , en denk eens na over snelheidsregeling, (met PWM)
je grijperkraan kan ook wel, (zelf doen is ook goed te doen zeker met mblock.
Maar het resultaat zal niet echt prima werken omdat er verschil in snelheden zal zijn.
die L298 bruggen werken overigens niet best op 5 Volt motorspanning dus simpeler is dan 12 Volt en dan de PWM klein zetten(of de stroombegrenzing gebruiken), dan werkt het perfect.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Arduino/kraan project
Hallo,
hierbij de sketch:
int vorige = 0;
void setup ()
{
pinMode (9, OUTPUT); // Deze pin zal de HC-05 pen 34 (key pin) trekken HIGH om module te schakelen naar AT-modus
pinMode (13, OUTPUT);
pinMode (3, OUTPUT);
pinMode (5, OUTPUT);
pinMode (6, OUTPUT);
pinMode (7, OUTPUT);
pinMode (2, OUTPUT);
pinMode (8, OUTPUT);
pinMode (10, OUTPUT);
pinMode (11, OUTPUT);
digitalWrite (9, HIGH);
Serial.begin (9600);
Serial.println ( "Enter AT commando's:");
Serial1.begin (38400); // HC-05 standaard snelheid in de AT-commando meer
delayGrab();
Serial1.println ("AT+ORGL");
delayGrab();
Serial1.println ("AT+RESET");
delayGrab();
Serial1.println ("AT+ROLE=0");
delayGrab();
Serial1.println ("AT+POLAR=1,0");
delayGrab();
Serial1.println ("AT+RESET");
delayGrab();
delay(3000);
Serial1.println ("AT+NAME=RIJWERK");
delayGrab();
Serial1.println ("AT+INIT");
Serial.println ("AT+INIT");
delayGrab();
Serial1.println ("AT+INQ");/**/
Serial.println ("AT+INQ");
delayGrab();
digitalWrite(13, 1);
}
void delayGrab(){
while (Serial1.available ()) {
Serial.write (Serial1.read ());
}
delay(700);
}
void loop() {
delay(100);
String reading = "";
// put your main code here, to run repeatedly:
while (Serial1.available ()) {
char inchar = Serial1.read();
reading = reading + inchar;
}
if(reading != ""){
Serial.println(reading);
uit();
if(reading == "#b=1#"){
digitalWrite(3, 1);
vorige = 1;
}else if(reading == "#b=17#" || reading == "#b=71#"){
digitalWrite(3, 1);
digitalWrite (2, 1);
vorige = 2;
}else if(reading == "#b=19#" || reading == "#b=91#"){
digitalWrite(3, 1);
digitalWrite (8, 1);
vorige = 3;
}else if(reading == "#b=1A#" || reading == "#b=A1#"){
digitalWrite(3, 1);
digitalWrite (10, 1);
vorige = 4;
}else if(reading == "#b=18#" || reading == "#b=81#"){
digitalWrite(3, 1);
digitalWrite (11, 1);
vorige = 5;
}
else if(reading == "#b=2#"){
digitalWrite(5, 1);
vorige = 6;
}else if(reading == "#b=27#" || reading == "#b=72#"){
digitalWrite(5, 1);
digitalWrite (2, 1);
vorige = 7;
}else if(reading == "#b=29#" || reading == "#b=92#"){
digitalWrite(5, 1);
digitalWrite (8, 1);
vorige = 8;
}else if(reading == "#b=2A#" || reading == "#b=A2#"){
digitalWrite(5, 1);
digitalWrite (10, 1);
vorige = 9;
}else if(reading == "#b=28#" || reading == "#b=82#"){
digitalWrite(5, 1);
digitalWrite (11, 1);
vorige = 10;
}
else if(reading == "#b=3#"){
digitalWrite (6, 1);
vorige = 11;
}else if(reading == "#b=37#" || reading == "#b=73#"){
digitalWrite (6, 1);
digitalWrite (2, 1);
vorige = 12;
}else if(reading == "#b=39#" || reading == "#b=93#"){
digitalWrite (6, 1);
digitalWrite (8, 1);
vorige = 13;
}else if(reading == "#b=3A#" || reading == "#b=A3#"){
digitalWrite (6, 1);
digitalWrite (10, 1);
vorige = 14;
}else if(reading == "#b=38#" || reading == "#b=83#"){
digitalWrite (6, 1);
digitalWrite (11, 1);
vorige = 15;
}
else if(reading == "#b=4#"){
digitalWrite (7, 1);
vorige = 16;
}else if(reading == "#b=47#" || reading == "#b=74#"){
digitalWrite (7, 1);
digitalWrite (2, 1);
vorige = 17;
}else if(reading == "#b=49#" || reading == "#b=94#"){
digitalWrite (7, 1);
digitalWrite (8, 1);
vorige = 18;
}else if(reading == "#b=4A#" || reading == "#b=A4#"){
digitalWrite (7, 1);
digitalWrite (10, 1);
vorige = 19;
}else if(reading == "#b=48#" || reading == "#b=84#"){
digitalWrite (7, 1);
digitalWrite (11, 1);
vorige = 20;
}
else if(reading == "#b=7#"){
digitalWrite (2, 1);
vorige = 21;
}else if(reading == "#b=9#"){
digitalWrite (8, 1);
vorige = 22;
}else if(reading == "#b=A#"){
digitalWrite (10, 1);
vorige = 23;
}else if(reading == "#b=8#"){
digitalWrite (11, 1);
vorige = 24;
}
else {
digitalWrite (3, 0);
digitalWrite (5, 0);
digitalWrite (6, 0);
digitalWrite (7, 0);
digitalWrite (2, 0);
digitalWrite (8, 0);
digitalWrite (10, 0);
digitalWrite (11, 0);
}
}
// Houd het lezen van Arduino Serial Monitor en te versturen naar HC-05
while (Serial.available ()) {
Serial1.write (Serial.read ());
}
}
void uit() {
digitalWrite (3, 0);
digitalWrite (5, 0);
digitalWrite (6, 0);
digitalWrite (7, 0);
digitalWrite (2, 0);
digitalWrite (8, 0);
digitalWrite (10, 0);
digitalWrite (11, 0);
}
Ik hoop dat je er wat hebt.
Zelf heb ik er weinig verstand van want bij deze sketch heb ik ook hulp gehad.
Alvast bedankt
Groeten Piet.
hierbij de sketch:
int vorige = 0;
void setup ()
{
pinMode (9, OUTPUT); // Deze pin zal de HC-05 pen 34 (key pin) trekken HIGH om module te schakelen naar AT-modus
pinMode (13, OUTPUT);
pinMode (3, OUTPUT);
pinMode (5, OUTPUT);
pinMode (6, OUTPUT);
pinMode (7, OUTPUT);
pinMode (2, OUTPUT);
pinMode (8, OUTPUT);
pinMode (10, OUTPUT);
pinMode (11, OUTPUT);
digitalWrite (9, HIGH);
Serial.begin (9600);
Serial.println ( "Enter AT commando's:");
Serial1.begin (38400); // HC-05 standaard snelheid in de AT-commando meer
delayGrab();
Serial1.println ("AT+ORGL");
delayGrab();
Serial1.println ("AT+RESET");
delayGrab();
Serial1.println ("AT+ROLE=0");
delayGrab();
Serial1.println ("AT+POLAR=1,0");
delayGrab();
Serial1.println ("AT+RESET");
delayGrab();
delay(3000);
Serial1.println ("AT+NAME=RIJWERK");
delayGrab();
Serial1.println ("AT+INIT");
Serial.println ("AT+INIT");
delayGrab();
Serial1.println ("AT+INQ");/**/
Serial.println ("AT+INQ");
delayGrab();
digitalWrite(13, 1);
}
void delayGrab(){
while (Serial1.available ()) {
Serial.write (Serial1.read ());
}
delay(700);
}
void loop() {
delay(100);
String reading = "";
// put your main code here, to run repeatedly:
while (Serial1.available ()) {
char inchar = Serial1.read();
reading = reading + inchar;
}
if(reading != ""){
Serial.println(reading);
uit();
if(reading == "#b=1#"){
digitalWrite(3, 1);
vorige = 1;
}else if(reading == "#b=17#" || reading == "#b=71#"){
digitalWrite(3, 1);
digitalWrite (2, 1);
vorige = 2;
}else if(reading == "#b=19#" || reading == "#b=91#"){
digitalWrite(3, 1);
digitalWrite (8, 1);
vorige = 3;
}else if(reading == "#b=1A#" || reading == "#b=A1#"){
digitalWrite(3, 1);
digitalWrite (10, 1);
vorige = 4;
}else if(reading == "#b=18#" || reading == "#b=81#"){
digitalWrite(3, 1);
digitalWrite (11, 1);
vorige = 5;
}
else if(reading == "#b=2#"){
digitalWrite(5, 1);
vorige = 6;
}else if(reading == "#b=27#" || reading == "#b=72#"){
digitalWrite(5, 1);
digitalWrite (2, 1);
vorige = 7;
}else if(reading == "#b=29#" || reading == "#b=92#"){
digitalWrite(5, 1);
digitalWrite (8, 1);
vorige = 8;
}else if(reading == "#b=2A#" || reading == "#b=A2#"){
digitalWrite(5, 1);
digitalWrite (10, 1);
vorige = 9;
}else if(reading == "#b=28#" || reading == "#b=82#"){
digitalWrite(5, 1);
digitalWrite (11, 1);
vorige = 10;
}
else if(reading == "#b=3#"){
digitalWrite (6, 1);
vorige = 11;
}else if(reading == "#b=37#" || reading == "#b=73#"){
digitalWrite (6, 1);
digitalWrite (2, 1);
vorige = 12;
}else if(reading == "#b=39#" || reading == "#b=93#"){
digitalWrite (6, 1);
digitalWrite (8, 1);
vorige = 13;
}else if(reading == "#b=3A#" || reading == "#b=A3#"){
digitalWrite (6, 1);
digitalWrite (10, 1);
vorige = 14;
}else if(reading == "#b=38#" || reading == "#b=83#"){
digitalWrite (6, 1);
digitalWrite (11, 1);
vorige = 15;
}
else if(reading == "#b=4#"){
digitalWrite (7, 1);
vorige = 16;
}else if(reading == "#b=47#" || reading == "#b=74#"){
digitalWrite (7, 1);
digitalWrite (2, 1);
vorige = 17;
}else if(reading == "#b=49#" || reading == "#b=94#"){
digitalWrite (7, 1);
digitalWrite (8, 1);
vorige = 18;
}else if(reading == "#b=4A#" || reading == "#b=A4#"){
digitalWrite (7, 1);
digitalWrite (10, 1);
vorige = 19;
}else if(reading == "#b=48#" || reading == "#b=84#"){
digitalWrite (7, 1);
digitalWrite (11, 1);
vorige = 20;
}
else if(reading == "#b=7#"){
digitalWrite (2, 1);
vorige = 21;
}else if(reading == "#b=9#"){
digitalWrite (8, 1);
vorige = 22;
}else if(reading == "#b=A#"){
digitalWrite (10, 1);
vorige = 23;
}else if(reading == "#b=8#"){
digitalWrite (11, 1);
vorige = 24;
}
else {
digitalWrite (3, 0);
digitalWrite (5, 0);
digitalWrite (6, 0);
digitalWrite (7, 0);
digitalWrite (2, 0);
digitalWrite (8, 0);
digitalWrite (10, 0);
digitalWrite (11, 0);
}
}
// Houd het lezen van Arduino Serial Monitor en te versturen naar HC-05
while (Serial.available ()) {
Serial1.write (Serial.read ());
}
}
void uit() {
digitalWrite (3, 0);
digitalWrite (5, 0);
digitalWrite (6, 0);
digitalWrite (7, 0);
digitalWrite (2, 0);
digitalWrite (8, 0);
digitalWrite (10, 0);
digitalWrite (11, 0);
}
Ik hoop dat je er wat hebt.
Zelf heb ik er weinig verstand van want bij deze sketch heb ik ook hulp gehad.
Alvast bedankt
Groeten Piet.
Re: Arduino/kraan project
zet er aub commentaar bij wat er allemaal aangestuurd word,
verder zag ik onder de else dat hier hetzelfde staat als in de functie uit, dus dat is mooi oefening.
verder zag ik onder de else dat hier hetzelfde staat als in de functie uit, dus dat is mooi oefening.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Arduino/kraan project
Wegens drukte heeft het even geduurd.
De sketch werkt prima, omdat iemand anders hem heeft gemaakt heeft heb ik er geen commentaar bij.
De volgende sketch zal ik wel graag wat uitleg van krijgen:
cpp code
Deze sketch heb ik van internet gehaald maar er zitten heel wat foutmeldingen in.
Graag wat hulp aub.
Vr gr Piet
De sketch werkt prima, omdat iemand anders hem heeft gemaakt heeft heb ik er geen commentaar bij.
De volgende sketch zal ik wel graag wat uitleg van krijgen:
cpp code
// verbind de pinnen van de motorcontroller met de Arduino digitale pinnen
// motor één
int enA = 10;
int in1 = 9;
int in2 = 8;
// motor twee
int enB = 5;
int in3 = 7;
int in4 = 6;
// motor drie
int enC= 11;
int in5 = 12;
int in6 = 13;
// Motor vier
int enD= 2;
int in7 = 3;
int in8 = 4;
void setup ()
{
// zet alle motorregelpennen op uitgangen
pinMode (enA, OUTPUT);
pinMode (enB, OUTPUT);
pinMode (enC, OUTPUT);
pinMode (enD,OUTPUT);
pinMode (in1, OUTPUT);
pinMode (in2, OUTPUT);
pinMode (in3, OUTPUT);
pinMode (in4, OUTPUT);
pinMode (in5, OUTPUT);
pinMode (in6, OUTPUT);
pinMode (in7, OUTPUT);
pinMode (in8, OUTPUT);
}
Void loop () {
// deze functie zal de motoren met een vaste snelheid in beide richtingen laten draaien
// zet motor A aan .knijper.
digitalWrite (in1, HIGH);
digitalWrite (in2, LOW);
// stel de snelheid in op 200 van het mogelijke bereik 0 ~ 255
analogWrite (enA, 200);
delay (2000); // 2 sec knijper dicht
// zet motor B aan . hoofd giek
digitalWrite (in3, HIGH);
digitalWrite (in4, LOW);
// stel de snelheid in op 200 van het mogelijke bereik 0 ~ 255
analogWrite (enB, 200);
delay (3000); // 3 sec giek hoog.
// zet motor C aan . zwenk rechts.
digitalWrite (in5, HIGH);
digitalWrite (in6, LOW);
// stel de snelheid in op 200 van het mogelijke bereik 0 ~ 255
analogWrite (enA, 200);
delay (3000); // 3 sec zwenk stopt.
// zet motor D aan . korte giek.
digitalWrite (in7, HIGH);
digitalWrite (in8, LOW);
// stel de snelheid in op 200 van het mogelijke bereik 0 ~ 255
analogWrite (enB, 200);
delay (3000); // 3 sec korte giek hoog.
// verander nu de motorrichtingen
digitalWrite (in1, LOW);
digitalWrite (in2, HIGH);
digitalWrite (in3, LOW);
digitalWrite (in4, HIGH);
digitalWrite (in5, LOW);
digitalWrite (in6, HIGH);
digitalWrite (in7, LOW);
digitalWrite (in8, HIGH);
delay (2000);
// zet nu motoren uit
digitalWrite (in1, LOW);
digitalWrite (in2, LOW);
digitalWrite (in3, LOW);
digitalWrite (in4, LOW);
digitalWrite (in5, LOW);
digitalWrite (in6, LOW);
digitalWrite (in7, LOW);
digitalWrite (in8, LOW);
}
void setup ()
{
// zet motor A aan knijper.
digitalWrite (in1, LOW);
digitalWrite (in2, HIGH);
// stel de snelheid in op 200 van het mogelijke bereik 0 ~ 255
analogWrite (enA, 200);
delay (2000); // 2 sec knijper open.
// zet motor C aan . zwenk links
digitalWrite (in5, LOW);
digitalWrite (in6, HIGH);
// stel de snelheid in op 200 van het mogelijke bereik 0 ~ 255
analogWrite (enA, 200);
delay (3000); // 3 sec zwenk stopt.
// zet motor D aan . korte giek.
digitalWrite (in7, LOW);
digitalWrite (in8, HIGH);
// stel de snelheid in op 200 van het mogelijke bereik 0 ~ 255
analogWrite (enB, 200);
delay (3000); // 3 sec korte giek laag.
// zet motor B aan . hoofd giek
digitalWrite (in3, LOW);
digitalWrite (in4, HIGH);
// stel de snelheid in op 200 van het mogelijke bereik 0 ~ 255
analogWrite (enB, 200);
delay (3000); // 3 sec hoofd giek laag.
}
Deze sketch heb ik van internet gehaald maar er zitten heel wat foutmeldingen in.
Graag wat hulp aub.
Vr gr Piet
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Arduino/kraan project
De eerste die ik al zie is dat je 2x setup() als functie hebt. En daar komt hij niet uit.
Vwb. de kwaliteit van de sketch...... bagger
Vwb. de kwaliteit van de sketch...... bagger
Re: Arduino/kraan project
vervang de onderste setup van naam maak er bijvoorbeeld start van
zet die functie start dan in de eerste setup onderaan, dan doet hij eerst de pinnen goed zetten, en daarna een paar waardes zetten.
gebruik goede namen voor variabelen, nu is het moeilijk om uit te zoeken waar het misgaat.
dus ipv in1 word motorAop en in2 motorAneer
voorzie elke regel van commentaar, zet er een paar serial.prints in dan kun je op de monitor zien wat er gebeurt.
en stapje voor stapje kom je ook vooruit.
zet die functie start dan in de eerste setup onderaan, dan doet hij eerst de pinnen goed zetten, en daarna een paar waardes zetten.
gebruik goede namen voor variabelen, nu is het moeilijk om uit te zoeken waar het misgaat.
dus ipv in1 word motorAop en in2 motorAneer
voorzie elke regel van commentaar, zet er een paar serial.prints in dan kun je op de monitor zien wat er gebeurt.
en stapje voor stapje kom je ook vooruit.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Arduino/kraan project
Het heeft een tijdje geduurd (weinig tijd) maar ik ben er uit.
Door een paar kleine aanpassingen is het gelukt.
Jammer van dit forum dat er door een persoon vaak negatief (bagger) gereageerd word.
Dat zie ik vaak in reacties van hem op dit forum.
Door een paar kleine aanpassingen is het gelukt.
Jammer van dit forum dat er door een persoon vaak negatief (bagger) gereageerd word.
Dat zie ik vaak in reacties van hem op dit forum.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Arduino/kraan project
Je mag me gerust bij naam noemen hoor. En die sketch is nog steeds bagger.
20 berichten
• Pagina 1 van 2 • 1, 2
Terug naar Afgeronde projecten
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 7 gasten