Hallo zusammen,
habe ein Motor-Shield der Firma Adafruit (Version 2.3) und möchte nun über Pushbuttons einen Schrittmotor kontrollieren und mit je einem Poti einen DC-Motor und servo.
Poti wäre für den Servo wäre Je nach dem wie die Stellung des Poti ist soll auch die Stellung des Servos sein.
beim Schrittmotor soll dies so funktionieren: will hier 3 verschiedene Pushbuttons haben (Halbschritt, Vollschritt und Microschritt) bei jedem Drücken einfach ein Schritt im Prinzip.
der DC-Motor soll je nach Stellung des Poti sich unterschiedlich schnell drehen oder halt gar nicht.
Habe ein paar Beispiele gefunden diesbezüglich, aber ich weiß nicht wie ich diese mit dem Shield verknüpfen soll bzw. ob das geht...
das mit dem Button funkioniert im Prinzip über eine Zustandsabfrage in einer if-Bedingung wenn ich mich nicht irre oder?
Grundform des Codes für mal nur einen Button(ohne Loop, weil hier muss das ja rein was mir noch fehlt^^) sieht wie folgt aus:
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"
#include <Servo.h>
// Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
// Connect a stepper motor with 64steps per revolution (5.6 degree)
// to motor port #1 (M1 and M2)
Adafruit_StepperMotor *myStepper = AFMS.getStepper(64, 1);
// And connect a DC motor to port M3
Adafruit_DCMotor *myMotor = AFMS.getMotor(3);
// Arduino Servo library
Servo servo1;
//declare Pins for Buttons, Poti and LEDs
const int button1 = 2; // the number of the pushbutton pin
const int led1 = 13; // the number of the LED pin
// variables will change:
boolean button1State = LOW; // variable for reading the pushbutton status
int button1PushCounter = 0; // counter for the number of button presses
void setup() {
// initialize the button pin as a input:
pinMode(button1, INPUT);
// initialize the Stepper as an output:
pinMode(myStepper, OUTPUT); // weiß nicht ob das hier so stimmt oder überhaupt nötig ist
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Motor party!");
//AFMS.begin(); // create with the default frequency 1.6KHz
AFMS.begin(100); // OR with a different frequency, say 1KHz
// Attach a servo to pin #10
servo1.attach(10);
Muss das ungefähr so aussehen im Loop?
müsste dann ja analog gehen für Vollschritt und Microschritt beim Schrittmotor. Außerdem will ich noch eine LED dann blinken lassen wenn ich den Button drücke.
void loop()
{
buttonState = digitalRead(button1);
if (button1State == HIGH){
digitalWrite(myStepper->(5,FORWARD,SINGLE),HIGH);
}
else
{
digitalWrite(myStepper,LOW)
}
welche Befehle bräuchte ich denn für den Poti und DC-Motor und Servo ?