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.