dc motor en servo tegelijk laten werken. hoe?
14 berichten
• Pagina 2 van 2 • 1, 2
Re: dc motor en servo tegelijk laten werken. hoe?
nicoverduin schreef:Ik stelde bewust de vraag wat een void is, omdat ik de indruk kreeg dat de TS hier niet mee bekend was. Het resultaat terug viel wat tegen terwijl er toch een uitgebreide reference is : https://www.arduino.cc/en/Reference/FunctionDeclaration
Tja je kan wel honderden tutorials maken, maar als je ze niet bekijkt ......
echt uitleg over 'void' wordt er niet gegeven in jouw, alleen dat de variabelen eenmalig geïnitialiseerd worden onder 'void' waarna de functie begint. er wordt een mooie duidelijke uitleg gegeven over een functie. Iets wat voor mij ook nieuw is dus interessant is.
Jelle
Advertisement
Re: dc motor en servo tegelijk laten werken. hoe?
Wel een uitleg van void: http://arduinoforum.nl/viewtopic.php?f=9&t=2632#p20082
Re: dc motor en servo tegelijk laten werken. hoe?
inderdaad, void geeft niks terug, en als een functie niks terug geeft gaat het programma ook weer naar void loop().
bedankt voor je uitleg over het 'millis' gebeuren, de logica hierachter staat me helder voor ogen. Ik heb in ieder geval mijn robot autootje aan de praat gekregen met een ultrasoon en 'if, else' structuur met veel herhalingen.
volgende uitdaging is om meer hardware aan het auto robot te hangen waardoor ik wel iets zal moeten gebruiken als 'milli's functies, classes e.d.
anyway zo ziet mijn code er nu.
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"
#include <NewPing.h>
#define trigger_Pin 11
#define echo_Pin 12
#define max_Afstand 200
#define led_Een 8
#define led_Twee 7
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_DCMotor *DC_motor_een = AFMS.getMotor(1);
Adafruit_DCMotor *DC_motor_twee = AFMS.getMotor(2);
Adafruit_DCMotor *DC_motor_drie = AFMS.getMotor(3);
Adafruit_DCMotor *DC_motor_vier = AFMS.getMotor(4);
NewPing sonar(trigger_Pin, echo_Pin, max_Afstand);
void setup() {
Serial.begin(9600);
AFMS.begin();
pinMode(led_Een, OUTPUT);
pinMode(led_Twee, OUTPUT);
}
void loop()
{
delay(50);
unsigned int uS = sonar.ping_cm();
if (uS < 10)
{
Serial.println("Afstand kleinder dan 10 cm motor draaien tegengesteld!");
digitalWrite(led_Een, HIGH); //led rood aan
digitalWrite(led_Twee,LOW);
DC_motor_een->run(FORWARD);
DC_motor_een->setSpeed(150);
DC_motor_twee->run(BACKWARD);
DC_motor_twee->setSpeed(150);
DC_motor_drie->run(FORWARD);
DC_motor_drie->setSpeed(150);
DC_motor_vier->run(BACKWARD);
DC_motor_vier->setSpeed(150);
}
else
{
Serial.println("Afstand groter dan 10 cm beide motoren vooruit!");
digitalWrite(led_Een, LOW);
digitalWrite(led_Twee, HIGH); //led groen aan
DC_motor_een->run(FORWARD);
DC_motor_een->setSpeed(150);
DC_motor_twee->run(FORWARD);
DC_motor_twee->setSpeed(150);
DC_motor_drie->run(FORWARD);
DC_motor_drie->setSpeed(150);
DC_motor_vier->run(FORWARD);
DC_motor_vier->setSpeed(150);
}
}
bedankt voor je uitleg over het 'millis' gebeuren, de logica hierachter staat me helder voor ogen. Ik heb in ieder geval mijn robot autootje aan de praat gekregen met een ultrasoon en 'if, else' structuur met veel herhalingen.
volgende uitdaging is om meer hardware aan het auto robot te hangen waardoor ik wel iets zal moeten gebruiken als 'milli's functies, classes e.d.
anyway zo ziet mijn code er nu.
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"
#include <NewPing.h>
#define trigger_Pin 11
#define echo_Pin 12
#define max_Afstand 200
#define led_Een 8
#define led_Twee 7
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_DCMotor *DC_motor_een = AFMS.getMotor(1);
Adafruit_DCMotor *DC_motor_twee = AFMS.getMotor(2);
Adafruit_DCMotor *DC_motor_drie = AFMS.getMotor(3);
Adafruit_DCMotor *DC_motor_vier = AFMS.getMotor(4);
NewPing sonar(trigger_Pin, echo_Pin, max_Afstand);
void setup() {
Serial.begin(9600);
AFMS.begin();
pinMode(led_Een, OUTPUT);
pinMode(led_Twee, OUTPUT);
}
void loop()
{
delay(50);
unsigned int uS = sonar.ping_cm();
if (uS < 10)
{
Serial.println("Afstand kleinder dan 10 cm motor draaien tegengesteld!");
digitalWrite(led_Een, HIGH); //led rood aan
digitalWrite(led_Twee,LOW);
DC_motor_een->run(FORWARD);
DC_motor_een->setSpeed(150);
DC_motor_twee->run(BACKWARD);
DC_motor_twee->setSpeed(150);
DC_motor_drie->run(FORWARD);
DC_motor_drie->setSpeed(150);
DC_motor_vier->run(BACKWARD);
DC_motor_vier->setSpeed(150);
}
else
{
Serial.println("Afstand groter dan 10 cm beide motoren vooruit!");
digitalWrite(led_Een, LOW);
digitalWrite(led_Twee, HIGH); //led groen aan
DC_motor_een->run(FORWARD);
DC_motor_een->setSpeed(150);
DC_motor_twee->run(FORWARD);
DC_motor_twee->setSpeed(150);
DC_motor_drie->run(FORWARD);
DC_motor_drie->setSpeed(150);
DC_motor_vier->run(FORWARD);
DC_motor_vier->setSpeed(150);
}
}
Re: dc motor en servo tegelijk laten werken. hoe?
ik zou sonar.ping uitbreiden met een maximale tijd, want anders blijft het wachten in die functie.
ik weet dat er een default is voor die tijd, maar die kun je dus aanpassen.
ik weet dat er een default is voor die tijd, maar die kun je dus aanpassen.
paul deelen
shooter@home.nl
shooter@home.nl
14 berichten
• Pagina 2 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten