Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: We-Mod-It | Das Forum von Moddern für Modder. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

der_george

"Mein Name ist George - Der George"

Beiträge: 4 832

Registrierungsdatum: 17. März 2010

Wohnort: Da wo der Berch wohnt

Beruf: Inginöööör und Freundinbeschäftiger

Danksagungen: 356

  • Nachricht senden

21

Samstag, 30. November 2013, 14:10

Stimmt - da ist ja ne USB-Buchse schon dran. :P me stupid. Ich warte noch auf die Lieferung von meinen Minis.- hab keine mehr :(

So long :0)
Meine Mods bei we-mod-it:
24h Stealth - 1.Platz 24h Livemodding DCMM 2010 | | taabar sin - 2. Platz Casemod DCMM 2012 | | 24h Semmetastic - 2. Platz 24h Livemodding DCMM 2013

Mein Modding-Verkaufsthread

Semme

-S +M (Make insider :P)

  • »Semme« ist der Autor dieses Themas

Beiträge: 1 029

Registrierungsdatum: 9. Januar 2011

Wohnort: Aachen

Beruf: Student

Danksagungen: 53

  • Nachricht senden

22

Samstag, 30. November 2013, 15:03

Haste welche bei dem 2,xx€ Angebot gekauft? Wollte auch erst zugreifen, aber ich bleibe bei den Nanos. Alleine wegen der schwarzen PCB's :love:

der_george

"Mein Name ist George - Der George"

Beiträge: 4 832

Registrierungsdatum: 17. März 2010

Wohnort: Da wo der Berch wohnt

Beruf: Inginöööör und Freundinbeschäftiger

Danksagungen: 356

  • Nachricht senden

23

Samstag, 30. November 2013, 15:29

Genau. ;) Ne ganze Tüte davon - man kann nie genug haben. :D Gibt auch Minis mit schwarzem PCB - hab auch ein paar in Projekten verbaut.

So long :0)
Meine Mods bei we-mod-it:
24h Stealth - 1.Platz 24h Livemodding DCMM 2010 | | taabar sin - 2. Platz Casemod DCMM 2012 | | 24h Semmetastic - 2. Platz 24h Livemodding DCMM 2013

Mein Modding-Verkaufsthread

Semme

-S +M (Make insider :P)

  • »Semme« ist der Autor dieses Themas

Beiträge: 1 029

Registrierungsdatum: 9. Januar 2011

Wohnort: Aachen

Beruf: Student

Danksagungen: 53

  • Nachricht senden

24

Samstag, 30. November 2013, 19:08

Genau. ;) Ne ganze Tüte davon - man kann nie genug haben. :D Gibt auch Minis mit schwarzem PCB - hab auch ein paar in Projekten verbaut.

So long :0)


Da hast du (leider) recht. Ich habe es in diesem Projekt geschafft 2 Arduinos in 30 Sekunden zu schrotten :(

Die Minis mit schwarzem PCB sind gar nicht mal so teuer:
http://www.aliexpress.com/item/10Pcs-Lot…1432639609.html

Semme

-S +M (Make insider :P)

  • »Semme« ist der Autor dieses Themas

Beiträge: 1 029

Registrierungsdatum: 9. Januar 2011

Wohnort: Aachen

Beruf: Student

Danksagungen: 53

  • Nachricht senden

25

Mittwoch, 4. Dezember 2013, 16:43

uuuuuund der 3. Arduino musste dran glauben :D :(

Es hat sich bereits 1 registrierter Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

Loewe1000 (04.12.2013)

der_george

"Mein Name ist George - Der George"

Beiträge: 4 832

Registrierungsdatum: 17. März 2010

Wohnort: Da wo der Berch wohnt

Beruf: Inginöööör und Freundinbeschäftiger

Danksagungen: 356

  • Nachricht senden

26

Mittwoch, 4. Dezember 2013, 16:49

Tztztz. Die armen Arduinos :S

Ich will Updates keine kaputten Arduinos! :D

So long :0)
Meine Mods bei we-mod-it:
24h Stealth - 1.Platz 24h Livemodding DCMM 2010 | | taabar sin - 2. Platz Casemod DCMM 2012 | | 24h Semmetastic - 2. Platz 24h Livemodding DCMM 2013

Mein Modding-Verkaufsthread

Loewe1000

Neu Hier!

Beiträge: 1

Registrierungsdatum: 29. November 2013

  • Nachricht senden

27

Mittwoch, 4. Dezember 2013, 22:14

Ich klinke mich hier jetzt auch mal ein! ;)

Eigentlich heißt es ja "Alle guten Dinge sind drei". Wir haben eben vier Arduinos gebraucht, bis jetzt endlich alles klappt.
Semme und ich haben die glorreiche Entdeckung gemacht, dass die AccelStepper-Library eine Funktion currentPosition() beinhaltet, mit der es natürlich um einiges einfacher ist, die aktuelle Position des Steppers auszulesen bzw. zu tracken, anstatt sie über die Zeit zu ermitteln. (wie der Name der Funktion ja auch schon andeuten lässt :D).
Jetzt läuft alles einwandfrei und es gibt maximal ein paar tausendstel Grad Abweichung. :thumbup:
Ein Abbruch durch den Benutzer ist jetzt an jeder Stelle der Nachführung möglich und bei Überhitzung bricht die Nachführung ab, bis sich alles (bzw. der Spannungsregler) wieder abgekühlt hat! :) :vain:

Wenn alles wie geplant läuft, wird es morgen ein Video geben, dass die einzelnen Szenarien zeigt! ;) Bis dahin könnt ihr gespannt bleiben! :modo:

Gruß Alex

der_george

"Mein Name ist George - Der George"

Beiträge: 4 832

Registrierungsdatum: 17. März 2010

Wohnort: Da wo der Berch wohnt

Beruf: Inginöööör und Freundinbeschäftiger

Danksagungen: 356

  • Nachricht senden

28

Mittwoch, 4. Dezember 2013, 22:34

Wieder kein Update. :P

Aber Herzlich WIllkommen bei WMI!
Na, dann freu ich mich schon auf das Update morgen. ;)

So long :0)
Meine Mods bei we-mod-it:
24h Stealth - 1.Platz 24h Livemodding DCMM 2010 | | taabar sin - 2. Platz Casemod DCMM 2012 | | 24h Semmetastic - 2. Platz 24h Livemodding DCMM 2013

Mein Modding-Verkaufsthread

Semme

-S +M (Make insider :P)

  • »Semme« ist der Autor dieses Themas

Beiträge: 1 029

Registrierungsdatum: 9. Januar 2011

Wohnort: Aachen

Beruf: Student

Danksagungen: 53

  • Nachricht senden

der_george

"Mein Name ist George - Der George"

Beiträge: 4 832

Registrierungsdatum: 17. März 2010

Wohnort: Da wo der Berch wohnt

Beruf: Inginöööör und Freundinbeschäftiger

Danksagungen: 356

  • Nachricht senden

30

Freitag, 6. Dezember 2013, 23:36

:phat:

(Lustige Bilder sind auch kein Update. ;) )

:P

So long :09
Meine Mods bei we-mod-it:
24h Stealth - 1.Platz 24h Livemodding DCMM 2010 | | taabar sin - 2. Platz Casemod DCMM 2012 | | 24h Semmetastic - 2. Platz 24h Livemodding DCMM 2013

Mein Modding-Verkaufsthread

Semme

-S +M (Make insider :P)

  • »Semme« ist der Autor dieses Themas

Beiträge: 1 029

Registrierungsdatum: 9. Januar 2011

Wohnort: Aachen

Beruf: Student

Danksagungen: 53

  • Nachricht senden

31

Samstag, 7. Dezember 2013, 12:25



(Lustige Bilder sind auch kein Update. ;) )




Okay. Okaaaaaay. :P

Update:

Soo. Gestern haben Axel und ich uns noch einmal etwas um den Code gekümmert. Da gab es noch so einige Probleme, die dafür sorgten, dass Abläufe und Funktionen nicht so funktionierten, wie wir uns das vorgestellt haben. Axel hat die Umstellung im Code oben ja schon gut geschrieben. Wir haben einfach eine Positionsspeicherung „nach Schritt“ und nicht nach Zeit. In Kombination mit einer von uns geschriebenen Funktion können wir nun JEDE Position des Stativs auf den Microstep (1600 Microsteps pro Umdrehung des Motors) genau ansteuern. Genau so haben wir uns das vorgestellt. :)

Abends haben wir uns dann noch Zeit für ein kleines Video genommen, das alle Funktionen recht deutlich zeigen.


VIDEO
http://youtu.be/4Xt-XzU9ThA


Erläuterung zum Video:

Standardnachführung
1. Einschalten durch Klick.
2. (grüne LED)Steuerung betriebsbereit.
3. Nachführung durch Doppelklick aktivieren.
4. Motor fährt von der Standbyestellung auf die Startposition zurück...
5. …wartet dort für eine bestimmte Zeit, damit der Nutzer die Kamera bereit machen kann (was im Idealfall schon vorher geschehen ist)
6. (rote LED)Nachführung beginnt. Über eine Infrarot LED wird die Kamera in einem bestimmten Intervall ausgelöst.
7. (weisse LED) Nachführung ist am Ende und der Motor fährt auf die Standbyeposition zurück

Abbruch durch Nutzer
1. während der Nachführung wird diese durch einen Doppelklick vorzeitig beendet.
2. (weisse LED) Motor fährt von der aktuellen Position auf die Standbyestellung zurück

Überhitzung
1. (blaue LED)Während der Nachführung tritt eine Überhitzung der Steuerung auf(im Video wird der Sensor an eine Halogenlampe gehalten)
2. Lüfter dreht sofort auf 100% Drehzahl und der Motor wird vom Strom genommen
3. (weisse LED)sobald die Betriebstemperatur durch den Lüfter wiederhergestellt ist, fährt der Motor auf Standbyestellung zurück und die Nachführung wird beendet/nicht fortgesetzt.

Der Lüfter wird immer und unabhängig von anderen Aktionen stufenlos temperaturgesteuert. Es ist Zufall, dass er einmal anspringt, sobald die grüne LED angeht. Die Anlaufspannung des Lüfters wurde dabei ebenfalls berücksichtigt, sodass er sich nicht quälen muss :D

Den Code haben wir nun komplett fertiggestellt. Die Statusausgabe und die Status-LED wurde noch zusätzlich(im Vergleich zum Video) verbessert - mehr Farben und genauere Ausgaben. Es müssen lediglich noch ein paar Variablen kalibriert werden - das machen wir, wenn der Aufbau komplett ist.

CODE

Spoiler Spoiler

/*
StativoStativo Firmware 0.9
Stand: 05.12.2013 16:20


FEHLER IM CODE:
KEINE


Legende der Status LED:
GRUEN: Betriebsbereit. Motorsteuerung aktiv. Auf Aktion durch Nutzer wartend.
GELB: Aktiv. Anfahren der Startposition/Standbyeposition.
ORANGE: Aktiv. Startposition angefahren. Start der Nachfuehrung nach CAMIntervall.
ROT: Aktiv. Nachfuehrung und Kamerasteuerung aktiv.
BLAU: Pausiert. Ueberhitzung. Luefterdrehzahl auf 100%. Wiederherstellung der Betriebstemperatur. Anfahren der Startposition nach Abkühlung.

by Simon Krause und Alexander Schulz
*/

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


#include "OneButton.h" //OneButton Bibliothek implementiert
#include "multiCameraIrControl.h" //multiCameraIrControl Bibliothek implementiert
#include "AccelStepper.h" //AccelStepper Bibliothek implementiert
#include "math.h" // Math Bilibothek implementiert

typedef enum {
ACTION_NONE, //Steuerung aus - LEDs aus
ACTION_ON, //Steuerung betriebsbereit - gruene LED ein
ACTION_1, //Steuerung aktiv - Nachfuehrung betreibsbereit/aktiv - gelbe/orange/rote LED ein
ACTION_2, //Motor auf Standbyestellung - gelbe LED ein
}
MyActions;

MyActions nextAction = ACTION_NONE; //Steuerung bei Start aus

#define EVER (;;)

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


//---------------------------KALIBRIERUNG----------------------------

long startposition = -8000; //Startposition in Mikroschritten
long runposition = 8000; //Anschlag der Nachfuehrung in Mikroschritten
int VR = 100; //Geschwindigkeit der Nachfuehrung
int VB= 4500; //Geschwindigkeit der Positionsanfahrung
unsigned long IRIntervall = 5000; //Intervall der IR-LED
unsigned int CAMIntervall = 5000; //Zeit bis zur Aktivierung der Nachfuehrung
int maxtemp = 50; //Maximale Temperatur des Spannungsreglers
float fanmintemp = 27; //minimale Temperatur der stufenlosen Lueftersteuerung
float fanmaxtemp = 35; //maximale Temperatur der stufenlosen Lueftersteuerung

//------------------------------MOTOR---------------------------------

AccelStepper stepper(1,3,2); //Motor Pins an 2 und 3
long steps; //Speicherung der aktuellen Position
boolean counted = false; //Hilfvariable fuer die Rotatefunktion
float rotatevelo; //Geschwindigkeit des Motors
int rotatecounter = 0; //Hilfsvariable fuer die Rotatefunktion

//-------------------------HILFSVARIABLEN-----------------------------

int i; //Variable zur Aktivierung einzelner Sub-Aktionen
int status; //Variable zur Aktivierung/Deaktivierung einzelner Aktionen
unsigned long previousmillis = 0; //Hilfsvariable fuer Steuerung der IR-LED
int photo; //Anzahl der aufgenommenen Fotos
unsigned long PIntervall; //Hilfsvariable fuer verzoegerte Nachfuehrung

//------------------------LUEFTERSTEUERUNG-----------------------------

boolean fanstatus = true; //Lueftersteuerung ein- oder ausschalten
float printtemp; //Aktuelle Temperatur
int fandiftemp = fanmaxtemp - fanmintemp; //Differenz zwischen fanmaxtemp und fanmintemp für stufenlose Lüftersteuerung
boolean overheat = false; //Hilfvariable fuer Steuerung bei Ueberhitzung

//--------------------------STATUSAUSGABE------------------------------

int printsec; //Gesamtzeit der Nachfuehrdauer in Sekunden
int printhours; //Zeit der Nachfuerdauer (nur Stunden)
int printminutes; //Zeit der Nachfuerdauer (nur Minuten)
int printseconds; //Zeit der Nachfuerdauer (nur Sekunden)
String printhoursname; //Name des Stundenausgabe der Nachfühdauer (Stunde/Stunden)
String printminutesname; //Name des Minutenausgabe der Nachfühdauer (Minute/Minuten)
String printsecondsname; //Name des Sekundenausgabe der Nachfühdauer (Sekunde/Sekunde)

//--------------------------KAMERASTEUERUNG----------------------------

Nikon SNikon(4); //IR LED fuer Nikon an PIN 4
Canon SCanon(4); //IR LED fuer Canon an PIN 4
Pentax SPentax(4); //IR LED fuer Pentax an PIN 4
Olympus SOlympus(4); //IR LED fuer Olympus an PIN 4
Sony SSony(4); //IR LED fuer Sony an PIN 4

//--------------------------EIN/AUSGAENGE------------------------------

OneButton button(A1, true); //Taster an PIN A1
#define DIR_PIN 2 //Richtung Easydriver an PIN 2
#define STEP_PIN 3 //Schritt Easydriver an PIN 3
int blue = 5; //blaue LED an PIN 5
int green = 6; //gruene LED an PIN 6
int mstop = 7; //Motorstop
int red = 9; //rote LED an PIN 9

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

void setup() {
Serial.begin(9600); //Serialoutput auf Port 9600 aktiviert

pinMode(DIR_PIN, OUTPUT); //PIN 2 als Output
pinMode(STEP_PIN, OUTPUT); //PIN 3 als Output
pinMode(5, OUTPUT); //PIN 5 als Output
pinMode(6, OUTPUT); //PIN 6 als Output
pinMode(7, OUTPUT); //PIN 7 als Output
pinMode(8, OUTPUT); //PIN 8 als Output
pinMode(9, OUTPUT); //PIN 9 als Output
pinMode(10, OUTPUT); //PIN 10 als Output
pinMode(11, OUTPUT); //PIN 11 als Output

stepper.setMaxSpeed(abs(4500)); //maximale Geschwindigkeit des Motors
button.attachClick(myClickFunction); //Klick-Funktion implementiert
button.attachDoubleClick(myDoubleClickFunction); //Doppelklick-Funktion implementiert
} //Ende setup

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

void loop() {
steps = stepper.currentPosition(); //Aktuelle Position des Motors in Variable speichern
unsigned long now = millis(); //Aktuelle Zeit in Variable speichern
button.tick(); //Taster ueberpruefen
printtemp = Thermister(analogRead(0)); //Temperatur kontinuierlich aktualisieren

//---------------------------LUEFTERSTEUERUNG---------------------------

if (fanstatus == true) {
if (printtemp >= fanmintemp && printtemp <= fanmaxtemp) { //Stufenlose Lueftersteuerung
analogWrite(10,((floor(185/fandiftemp)*(printtemp-fanmintemp) )+70));
}
else if (printtemp > fanmaxtemp) { //100% Drehzahl bei erhoeter Temperatur
analogWrite(10,255);
}
else {
analogWrite(10,0);
}
}

//-------------------------TEMPERATURAKTIONEN---------------------------

if (printtemp > maxtemp) { //Motorstopp bei Ueberhitzung - blaue LED ein
digitalWrite(mstop, LOW); //Motorsteuerung aus
digitalWrite(blue, HIGH); //Status-LED auf blau
digitalWrite(red, LOW);
digitalWrite(green, LOW);
digitalWrite(11, HIGH); //Buzzer ein
if (overheat == false) { //einmalige Ausgabe der Ueberhitzung
Serial.print("\nAchtung Ueberhitzung! ");
Serial.print("Temperatur: ");
Serial.print(printtemp);
Serial.print(char(176));
Serial.print("C");
Serial.print("\n");
overheat = true;
status = 0;
rotatecounter = 0;
i = 4;
nextAction = ACTION_NONE;
}
}

if (overheat == true && printtemp > (maxtemp-5) && (millis() % 1000 == 0)) { //regelmaessige Ausgabe der Temperatur bei Ueberhitzung
Serial.print("\nTemperatur: ");
Serial.print(printtemp);
Serial.print(char(176));
Serial.print("C");
}

if (overheat == true && printtemp < (maxtemp-5)) { //Aktion nach Wiederherstellung der Betriebstemperatur
Serial.println("\nBetriebstemperatur wiederhergestellt!");
digitalWrite(11, LOW); //Buzzer ausschalten
digitalWrite(blue, HIGH); //Status LED auf weiß
digitalWrite(red, HIGH);
digitalWrite(green, HIGH);
nextAction = ACTION_1; //Steuerung betriebsbereit machen
status = 5;
overheat = false;
}

//-------------------------ACTION_NONE--------------------------

if (nextAction == ACTION_NONE) { //Steuerung aus - LEDs aus
if (i == 3) {
digitalWrite(blue, LOW); //Status-LED aus
digitalWrite(red, LOW);
digitalWrite(green, LOW);
digitalWrite(mstop, LOW); //Motorsteuerung aus
Serial.println("Steuerung aus.");
i=4;
}
}

//--------------------------ACTION_ON---------------------------

else if (nextAction == ACTION_ON) { //Steuerung betriebsbereit - gruene LED ein
if (i == 3) {
Serial.println("Steuerung betriebsbereit.");
digitalWrite(blue, LOW); //Status LED auf gruen
digitalWrite(green, HIGH);
digitalWrite(red, LOW);
digitalWrite(mstop, HIGH); //Motorsteuerung an
status=0;
photo=0;
i=4;
}
}

//--------------------------ACTION_1----------------------------

else if (nextAction == ACTION_1) { //Steuerung aktiv - gelbe/orange/rote LED ein
if (i < 5){ //Anfahren der Startposition - Warten auf Nachfuehrung
if (status == 0) {
Serial.println("Startstellung anfahren");
digitalWrite(blue, LOW); //Status-LED auf gelb
analogWrite(green, 100);
digitalWrite(red, HIGH);
status = 1;
}
if (status == 1) {
rotate(VB,startposition); //Anfahren der Startposition von der Standbyestellung
}
if (status == 2) { //Warten auf Nachfuehrung
Serial.println("Nachfuehrung betriebsbereit. Kamera bereit machen.");
PIntervall = millis();
analogWrite(green, 25); //Status-LED auf orange
digitalWrite(blue, LOW);
digitalWrite(red, HIGH);
status = 3;
}
if (status == 3) { //Wartezeit bis Nachfuehrung
if(millis() - PIntervall > CAMIntervall) {
previousmillis = millis();
Serial.println("Nachfuehrung aktiv.");
i=5;
status=4;
}
}
}
else if (i == 5) { //Nachfuehrung aktiv - Kamerasteuerung aktiv
unsigned long currentmillis = millis();
digitalWrite(green, LOW); //Status-LED auf rot
digitalWrite(blue, LOW);
digitalWrite(red, HIGH);
if(currentmillis - previousmillis > IRIntervall){ //Kamerasteuerung und Statusausgabe
previousmillis = currentmillis;
SNikon.shutterNow(); //Ausloesung der Kamera
SCanon.shutterNow();
SPentax.shutterNow();
SOlympus.shutterNow();
SSony.shutterNow();
photo == photo++; //Anzahl der Fotos um 1 erhoeen
printsec = photo * IRIntervall / 1000;
Serial.println("======================================");
Serial.println("Nachfuehrung aktiv.");
Serial.print(photo);
if (photo == 1){ //Bedingungen fuer das Layout der Statusausgabe
Serial.println(" Foto");
}
else {
Serial.println(" Fotos");
}
printhours = float( (printsec % 86400) /3600);
printminutes = float( (printsec % 3600) /60);
printseconds = float(printsec % 60);
if (printhours == 1) {
printhoursname = " Stunde ";
}
else {
printhoursname = " Stunden ";
}
if (printminutes == 1) {
printminutesname = " Minute ";
}
else {
printminutesname = " Minuten ";
}
if (printseconds == 1) {
printsecondsname = " Sekunde ";
}
else {
printsecondsname = " Sekunden ";
}
Serial.print("Dauer: ");
if (printhours > 0) {
Serial.print(printhours);
Serial.print(printhoursname);
}
if (printminutes > 0) {
Serial.print(printminutes);
Serial.print(printminutesname);
}
if (printseconds > 0) {
Serial.print(printseconds);
Serial.print(printsecondsname);
}
Serial.print("\n"); //Temperatusausgabe
Serial.print("Temperatur: ");
Serial.print(printtemp);
Serial.print(char(176));
Serial.print("C");
Serial.print("\n");
}
if (status == 4){
rotate(VR,runposition); //Nachfuehrung ab Startposition zum Anschlag
}
}
}

//--------------------------ACTION_2----------------------------

else if (nextAction == ACTION_2) { //Anfahren der Standbyestellung - gelbe LED ein
if (i == 3) {
analogWrite(green, 100); //Status-LED auf gelb
digitalWrite(blue, LOW);
digitalWrite(red, HIGH);
if (status == 5) {
Serial.println("Standbyestellung anfahren.");
status = 6;
}
if (status == 6) {
rotate(VB,0); //Anfahren der Standbyestellung
}
}
else if (i==4){ //Steuerung nach Anfahren der Standbyestellung betriebsbereit
myDoubleClickFunction();
}
}

}

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

void myClickFunction() { //Aktionswechsel bei Klick
i=3;
if (nextAction == ACTION_NONE){
nextAction = ACTION_ON;
}
else {
nextAction = ACTION_NONE;
}
}

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

void myDoubleClickFunction() { //Aktionswechsel bei Doppelklick
i=3;
rotatecounter = 0;
if (nextAction == ACTION_ON) {
status = 0;
nextAction = ACTION_1;
}
else if (nextAction == ACTION_1) {
status = 5;
Serial.println("======================================");
Serial.println("Nachfuehrung beendet.");
nextAction = ACTION_2;
}
else if (nextAction == ACTION_2) {
nextAction = ACTION_ON;
}
}

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

double Thermister(float RawADC) { //Funktion zur Temperaturbestimmung
double Temp;
Temp = log(((10240000/RawADC) - 10000));
Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp );
Temp = Temp - 273.15; //Wert in Celsius konvertieren
return Temp;
}

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

void rotate(float velo, long GoToStep) { //Funktion zur Steuerung des Motors
if (rotatecounter == 0) { //einmaliger Ablauf vor Aktion
digitalWrite(mstop, HIGH); //Motorsteuerung ein
counted = false;
rotatecounter = 1;
if (GoToStep <= steps) {
rotatevelo = -1 * velo;
}
else {
rotatevelo = velo;
}
}
if (rotatevelo < 0.0) { //Bedingung fuer negative Rotation
if (GoToStep <= steps) {
stepper.setSpeed(rotatevelo);
stepper.runSpeed();
}
else {
counted = true;
}
}
else if (rotatevelo > 0.0) { //Bedingung fuer positive Rotation
if (GoToStep >= steps) {
stepper.setSpeed(rotatevelo);
stepper.runSpeed();
}
else {
counted = true;
}
}
if (counted == true) { //Aktionen nach Steuerung
digitalWrite(mstop, LOW); //Motorsteuerung aus
rotatecounter = 0;
if(status == 1) {
status = 2;
Serial.println("Startstellung angefahren.");
}
else if (status == 6) {
status = 0;
i = 4;
Serial.println("Standbyestellung angefahren.");
}
else if(status == 4) {
myDoubleClickFunction();
}
}
}




MfG
Semme

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Semme« (7. Dezember 2013, 12:39)


der_george

"Mein Name ist George - Der George"

Beiträge: 4 832

Registrierungsdatum: 17. März 2010

Wohnort: Da wo der Berch wohnt

Beruf: Inginöööör und Freundinbeschäftiger

Danksagungen: 356

  • Nachricht senden

32

Samstag, 7. Dezember 2013, 14:22

Schön strukturierter Code! Ist gut geschrieben - für einen außenstehenden sehr leicht zu lesen und zu verstehen. - Vorbildlich! ;)

Haste mal überprüft wie genau die millis() Funktion bei dir arbeitet. Gerade bei billigen Teilen macht das gerne mal Probleme - (leidvolle Erfahrung, beim Entwicklen einer binären Wanduhr - ich hab mir nen billiges RTC Modul für 1,50 inkl. Versand aus China bestellt).

So long :0)
Meine Mods bei we-mod-it:
24h Stealth - 1.Platz 24h Livemodding DCMM 2010 | | taabar sin - 2. Platz Casemod DCMM 2012 | | 24h Semmetastic - 2. Platz 24h Livemodding DCMM 2013

Mein Modding-Verkaufsthread

Semme

-S +M (Make insider :P)

  • »Semme« ist der Autor dieses Themas

Beiträge: 1 029

Registrierungsdatum: 9. Januar 2011

Wohnort: Aachen

Beruf: Student

Danksagungen: 53

  • Nachricht senden

33

Mittwoch, 1. Januar 2014, 16:38

bald gibts ein kleines Update :)


Paladin

Wenn I Murksen muss... Aaarrgh..

Beiträge: 12 086

Registrierungsdatum: 18. Juli 2009

Name: Patrick Betz

Wohnort: Simbach bei Landau a. d. Isar

Beruf: Kraftfahrer (Gelernter Schreiner)

Danksagungen: 363

  • Nachricht senden

34

Mittwoch, 1. Januar 2014, 17:56

Ja dann...lass mal sehn ;)
Schaut echt schon gut aus.
COMPLEX-MODS.deMODDING | CONS | CE-MODS
HausModding by Patrick und Sonja

Ein Bayer kann alles, außer Hochdeutsch...... :D


ringo

Der 0 Punkte Ringo

Beiträge: 5 591

Registrierungsdatum: 15. Juni 2009

Wohnort: Kanton SG

Danksagungen: 161

  • Nachricht senden

35

Mittwoch, 1. Januar 2014, 21:57

Schaut gut aus, kannst du für die Spindel noch Lagerstellen einbauen, derzeit denke ich wird es nur im PMMA gelagert.

www.complex-mods.de

der_george

"Mein Name ist George - Der George"

Beiträge: 4 832

Registrierungsdatum: 17. März 2010

Wohnort: Da wo der Berch wohnt

Beruf: Inginöööör und Freundinbeschäftiger

Danksagungen: 356

  • Nachricht senden

36

Donnerstag, 2. Januar 2014, 11:31

Ich freu mich schon aufs Update - lass uns nicht zu lange warten. ;)

So long :0)
Meine Mods bei we-mod-it:
24h Stealth - 1.Platz 24h Livemodding DCMM 2010 | | taabar sin - 2. Platz Casemod DCMM 2012 | | 24h Semmetastic - 2. Platz 24h Livemodding DCMM 2013

Mein Modding-Verkaufsthread

Semme

-S +M (Make insider :P)

  • »Semme« ist der Autor dieses Themas

Beiträge: 1 029

Registrierungsdatum: 9. Januar 2011

Wohnort: Aachen

Beruf: Student

Danksagungen: 53

  • Nachricht senden

37

Mittwoch, 8. Januar 2014, 00:29

Dauert doch länger als geplant mit dem Update. Ist gerade mit Schule und co alles etwas stressig.

Heute kommt aber auf jeden Fall noch ein bisschen Bildmaterial :)

Semme

-S +M (Make insider :P)

  • »Semme« ist der Autor dieses Themas

Beiträge: 1 029

Registrierungsdatum: 9. Januar 2011

Wohnort: Aachen

Beruf: Student

Danksagungen: 53

  • Nachricht senden

ringo

Der 0 Punkte Ringo

Beiträge: 5 591

Registrierungsdatum: 15. Juni 2009

Wohnort: Kanton SG

Danksagungen: 161

  • Nachricht senden

39

Donnerstag, 9. Januar 2014, 21:35

Sieht gut aus.

www.complex-mods.de

Paladin

Wenn I Murksen muss... Aaarrgh..

Beiträge: 12 086

Registrierungsdatum: 18. Juli 2009

Name: Patrick Betz

Wohnort: Simbach bei Landau a. d. Isar

Beruf: Kraftfahrer (Gelernter Schreiner)

Danksagungen: 363

  • Nachricht senden

40

Donnerstag, 9. Januar 2014, 21:52

Schaut gut aus, aber stört das bei den Aufnahmen nicht wenn das etwas eiert? Oder dreht das dann so langsam das es kaum sichtbar ist?
COMPLEX-MODS.deMODDING | CONS | CE-MODS
HausModding by Patrick und Sonja

Ein Bayer kann alles, außer Hochdeutsch...... :D