Hallo,
bin hier neu und suche jemanden von Euch, der mit bei der Erweiterung
meiner Drehtellersteuerung behilflich sein kann. Habe ein Projekt mit
Anleitung Für den DAVID 3D Scanner erfolgreich umgesetzt, stoße aber nun
an meiner technischen Grenzen. Möchte meinen Drehteller mit zwei Tasten
so erweitern, dass man nicht mehr über das Arduino Board die Anzahl der
Teildrehungen eingibt, sondern direkt über zwei Tasten und einem
Ausgabedisplay.
Benutze eine Arduino Uno + Motorshield V2 und Schrittmotor.
Hier der Code:
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include <Adafruit_PWMServoDriver.h>
int val; //Variable to store the content of the COM port
int count = 0; // Variable to count the scans
int limit = 8; // Means the number of scans/round
int StepsPerRound = 200; // Depends on the stepper's + gear's
resolution
// Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
// Or, create it with a different I2C address (say for stacking)
// Adafruit_MotorShield AFMS = Adafruit_MotorShield(0x61);
// Connect a stepper motor with 200 steps per revolution (1.8
degree)
// to motor port #2 (M3 and M4)
Adafruit_StepperMotor *myMotor = AFMS.getStepper(200, 2);
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
AFMS.begin(); // create with the default frequency 1.6KHz
//AFMS.begin(1000); // OR with a different frequency, say 1KHz
myMotor->setSpeed(10); // 10 rpm
}
void loop() {
if (Serial.available() > 0) {
val = Serial.read(); // read if theres a message in the port
and store it in the communication variable
}
if (val == 'T' && count < limit){
myMotor->step(StepsPerRound/limit, FORWARD, SINGLE); //Performs
a turntable motion - This is needed for my Adafruit MotorShield on the
Arduino
myMotor->release(); // Releases the stepper - This is needed for
my Adafruit MotorShield on the Arduino
count +=1; //
}
if (val == '2' && count > 0 && count < limit){
Serial.println("S"); // Triggers the next scan when DAVID has
sent its "ready" message
}
if (val == '2' && count == limit){
count = 0; //Just to reset things when you finished a whole
round
}
if (val == '1'){
count = 0; //To reset the counter after a faulty try switch to
DAVID#s Calibration mode and return to ScanningMode
}
val = 0; // To refresh the COM port input
}
Bin gerne bereit auch das ganze zu entlohnen. bitte nur seriöse
Angebote.
Hi, du möchtest also die variable limit nicht mehr im Quellcode definieren sondern über 2 tasten hoch zählen bzw runter zählen und das an ein Display geben? was für ein Display schwebt dir vor? (7 Segment anzeige z.b.) Eine Möglichkeit in die Scanner Software einzugreifen gibt es nicht? (Um den Wert für limit über die serielle Schnittstelle übertragen)
Hi, Genau so. Das display soll anzeigen wieviele umdrehungen gerade getätigt werden. Der Drehteller wird über com4 aus gesteuert und funktioniert sobald der erste scan gestartet wird übernimmt der Arduino die Steuerung. Möchte halt nur die Anzahl der Drehungen eingeben können und auf dem Display ausgeben. Gruss. Kai
Ja das ist doch ein ideales Einstiegsprojekt in die Arduino Welt! Wieviele Pins sind noch frei? Du kannst dich bei adafruit (unter led oder lcd & displays) nach displays umschauen, vllt. nicht direkt übertreiben mit nem vollfarb tft display aber für die Displays von adafruit sollte es im großen und ganzen fertige bibliotheken zur ansteuerung geben, also nicht viel aufwand bei der implementierung. Das wäre doch sicher was für den Anfang: https://www.adafruit.com/products/878 Dazu noch 2 Taster und es kann losgehen.
Hi Alexander, genau.. so etwas . würde vollkommen reichen. Poste dir mal den Arduino und das Motorshield. Frage. wärst Du an der Realisierung diese Projektes interessiert und was würde mich der Spaß kosten? Gruss Kai
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.

