Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Arduino Mega 2560 Programmiren

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Muecke
Gast





BeitragVerfasst am: 24.01.2014, 14:56    Titel: Arduino Mega 2560 Programmiren Antworten mit Zitat

Hallo miteinander,

ich habe hier ein "Arduino Mega 2560" und habe mir dazu eine Schaltung gebaut mit der ich jetzt 3 verschiedene Magnet Ventile einen Blitz und einen Taster ansteuern / Lesen kann lächeln.

habe auch schon das erste Kleine Prg auf dem Arduino eigenen Editor geschrieben und es dann auf das Arduino aufgespielt das Klappt alles lächeln Perfekt lächeln.

Ich habe den Aufbau gemacht um Wassertropfen Bilder machen zu können.

dafür muss ich die Ventile und den Blitz in verschiedenen Zeiten auslösen können etc.

Es ist sehr umständlich jedes mal in den Code zu gehen und ein Ventil um ein paar ms zu verändern, daher würde ich mir gerne eine Grafische Oberflechte machen mit der ich das Schnell und einfach erledigen kann, und dann an das Arduino senden, so das es den Code hat wenn ich auf den Taster Drücke lächeln


hat so was schon mal jemand mit FB gemacht?
oder kann mir hier ein Paar Tipps geben?

Gruß
Nach oben
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 24.01.2014, 15:33    Titel: Antworten mit Zitat

das kommt stark auf den souce im arduino an, .. wie du das mithilfe fb ansteuern kannst. (RS232, SPI, Parallel, ...)


Etwas mehr details wären da nicht schlecht.


MfG
TPM

PS: hab ich auch schon gemacht, bis zu 1/1000000sec zwinkern



MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muecke
Gast





BeitragVerfasst am: 24.01.2014, 16:03    Titel: Antworten mit Zitat

Das sieht ja Heiß aus, hast du da eine Lichtschranke benutzt?

öm welche Details meinst du?
für mich ist die Materie mit dem Arduino noch alles mehr als Neu traurig

meinst du den Aufbau meiner Schaltung oder eher was auf dem Arduino selbst verbaut ist?
Nach oben
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 24.01.2014, 16:12    Titel: Antworten mit Zitat

Jo, ist ne laserlichtschranke. welche den Timer steuert. Das ganze war ne Auftragsarbeit und ist ein Prototyp. Einstellungen können alle via LCD und Tasten vorgenommen werden.

Details: naja... es stellt sich ja die Frage, wie du die Steuerung realisieren möchtest, und wie du die Parameter in der Steuerung manipulieren willst. Sprich, wie möchtest du die Parameter zur Anlage Übertragen? via RS232 schnittstelle, via Ethernet, ... usw.

Danach richtet sich dann ja auch, wie der Aufbau der FB-Software realisiert wird.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muecke
Gast





BeitragVerfasst am: 24.01.2014, 17:22    Titel: Antworten mit Zitat

Cool, an so was dachte ich auch, mein Aufbau ist Ähnlich zwinkern.


ich habe das "Arduino Mega 2560"

auf diesen kann man Programme hinterlegen,
Programmierbar ist das über die Software "Arduino IDE"

hier kann ich ein Kleines Programm schreiben, bei dem ich definiere was Passiert wenn mein Taster (Port xx) Aktivist wird.

ich habe jetzt mal das erste Prog geschrieben und gesagt wenn mein Port XX gedrückt (Aktiv) ist dann soll das Magnetventil "Port MV) für 0,5 Sek Aktivire werden danach soll für 150ms pausiert werden und der Blitz (PortBL) aktiviert werden für 100ms dann ist das Programm wider auf Wartestellung auf den Taster.

um das Programm auf das Arduino zu bringen ist eine USB to Seriell auf dem Bord verbaut, wenn ich es einstecke wird automatisch das Teil erkannt und ein COM X erstellt (bisher nur auf dem Mac getestet).
Über das Eigene IDE kann ich dann den Code auf das Arduino Laden und da ist es dann in einem "Speicher" immer wider abrufbar lächeln auch nach dem aus ein einschalten.


ich würde gerne genau das Programm in FB erstellen und dann auf das Arduino hoch laden denn dann kann ich mir ein Kleinen Sprogram überlegen was ich denn genau Brauche in welcher Reihenvogel und kann über die FB Software die Parameter Pflegen und auf das Bord hoch laden, ist angenehmer wie im Code selber die Parameter einzutragen.

Ich schätze nur das der IDE vom Arduino den Code in irgend einer Weise Umwandelt und es dann auf dem Bord Speichert. die Frage ist nur wie?

ist das das was du Wissen wolltest? bzw. musst um mir etwas weiter zu helfen?


ich möchte nicht das das Arduino mir den Befehl Taste gedrückt an das FB Programm schickt und das es dann verarbeitet denn das kann und soll das Arduino machen ist bestimmt schneller wie das über die Schnittelle hin und her zu senden.


Das ist die Schaltung wie ich sie gerade aufgebaut habe:
https://dl.dropboxusercontent.com/u/130479015/Forum/FreeBasic/Arduino/Schaltung.jpg


und das ist z.B. so ein Test Programm wenn Taste gedrückt wurde dann soll Ventil 1 Öffnen warten Schließen danach soll Ventil 2 Öffnen warten Schließen und dann wider auf Taster warten.

Code:

// Variablen füllen   
int Ventil_1   = 8 ;     // Magnetventiel 12V
int Ventil_2   = 9 ;     // Magnetventiel 12V
int Taster    = 2;      // Taster
int Lauf      = 1;      // 1 keine Taste 0 taste gedrückt

// Ein- & Ausgänge definiren
void setup()
{
  pinMode(Ventil_1, OUTPUT);
  pinMode(Ventil_2, OUTPUT);
  pinMode(Taster,   INPUT);
}

// Programm Schleife
void loop()
{

  if (digitalRead(Taster)== HIGH)
   {
    Lauf = 0;
     while(digitalRead(Taster)== HIGH)
     {
       if (Lauf == 0)
        {
         // Hier kann ich genau ein mal was ausführen wenn die taste gedrückt wurde !!
         
         digitalWrite(Ventil_1, HIGH);    // Ventil_1 Offen
         delay(1000);                     // Warten für 1.000 ms
         digitalWrite(Ventil_1, LOW);     // Ventil_1 Zu
         digitalWrite(Ventil_2, HIGH);    // Ventil_2 Offen
         delay(1000);                     // Warten für 1.000 ms
         digitalWrite(Ventil_2, LOW);     // Ventil_2 Zu
         
         Lauf = 1;                      // Merken das Programm duchgelaufen ist.
        }       
     }
   }
}


jetzt ist die Frage wie mache ich das am besten ich dachte mir das ich den Code über FB erstelle und dann über den USB to Seriell an das Arduino sende.
und dort dann die Taste betätigen kann lächeln.
und mein FB kann ich Grafisch schön darstellen lächeln und einfach in der Bedienung machen.
Nach oben
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 24.01.2014, 18:30    Titel: Antworten mit Zitat

also, leider muss ich dir hier enttäuschen. FB ist nicht geeignet, bzw. fähig binarys für die AVR order ARM architektur zu erzegen. Da du einen MEGA2560 hast ist dies ein AVR Core.

Du kannst hier mit z.B. Bascom AVR oder mit LunaAVR programme in basic-ähnlicher Sprach schreiben. Aber mit FB funktioniert dies leider nicht.


Du kannst jedoch ein prograsmm in fb für den pc schreiben, das via rs232 mit dem arduino kommuniziert (dafür brauchst du ein programm, das im arduino läuft). Dann kannst du z.B. steuerdaten vom fb programm auf dem pc via rs232 an das arduino-ide/bascom avr / lunaavr programm auf dem arduino senden. dieser nimmt die daten entgegen, und kann dann z.B. die zeitwerte ändern.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muecke
Gast





BeitragVerfasst am: 24.01.2014, 18:47    Titel: Antworten mit Zitat

OK wenn ich das Richtig verstanden habe,
ich kann über das FB meine Parameter (z.B. eine ini Datei) an das Arduino senden und das kann dann wiederum mit dem Programm was darauf ist die INI Datei verarbeiten, sonst wird es hier schlechte Karten geben.

hmm Ok, habe ich mir zwar etwas anders vorgestellt, doch wenn es nicht anders geht dann muss ich mir hierfür eine Lösung einfallen lassen.
Nach oben
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 24.01.2014, 18:48    Titel: Antworten mit Zitat

Naja.. was du hin schickst bleibt dir überlassen. Das Programm auf dem Arduino wird ja von dir geschrieben. Entsprechend kannst du dir dann auch ein Protokoll ausdenken lächeln

Sprich .. wie du es machst, liegt bei dir. Du hast die freie wahl .. der qual Zunge rausstrecken


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muecke
Gast





BeitragVerfasst am: 24.01.2014, 19:20    Titel: Antworten mit Zitat

meine Grauen Hirnzellen laufen noch, doch wenn ich das von dir gerade Lese da kommt mir der Gedanke.

eine INI Datei in die Richtung

Port=Ereignis
[config]
4=Input
7=Output
10=Output

[Programm]
I4=1
O7=1
p=100
O7=0
P=10
O10=1
010=0


I4 bedeutet Eingang Digitaler Port Nr. 4
O7 bedeutet Ausgang Digitaler Port Nr. 4
P bedeutet Passiren
Hinter dem I4, O7, etc. kommt dann ein <>= Zeichen mit dem die Bedingung gefüttert werden soll
die 1 ist dann der Wert des Digitalen Anschlusses 1 bzw. 0

so Könnte ich eine Schleife machen und mir dann Quasi das Programm in einer eigenen Kleinen Programmiersprache erstellen und auf das Arduino senden lächeln es ist zwar sehr Primitiv dürfte jedoch reichen lächeln

dann muss ich mir mal überlegen was ich da alles Benötige.


ps. mein InI Code würde dann also z.B. das bewirken:

Digitaler Port 4 = Taster also Input
Digitaler Port 7 = Ventiel also Output
Digitaler Port 10 = Blitzschuh also Output

Unter [Config] müssen alle ein und Ausgänge definiert werden
das [Programm] läuft dann immer in einer DO Loop schleife


Übersätze wäre mein code also so was.

definiere Port 4 als Input
definiere Port 7 als Output
definiere Port 10 als Output

Abfrage Port 4 ob Wert 1 ist wenn ja Nächste Zeile bearbeiten
Sätze Port 7 auf 1
Passire für 100ms
Sätze Port 7 auf 0
Passire 10ms
Sätze Port 10 auf 1
Sätze Port 10 auf 0

Beginne wider oben im Programm


hmm das wäre was, ... dann muss ich mich mal beim Arduino einlesen wie ich so ein Programm erstellen kann das das alles auch Umsätzen kann auf dem Arduino.

So könnte man auch Problemlos mehr oder weniger Ventile mit anbringen, die Reihenvogel der Ventile verändern etc.

was mir gerade durch den Kopf geht ist wie ich einen Code einbringe das bei einem Taster darauf gewartet wird das er wider los gelassen wird. Ok das ist eine Überlegung die ich später machen werde,
jetzt muss ich mal schauen wie man so eine "INI" Datei auslesen und verarbeiten kann. auf dem Arduino.
Nach oben
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 24.01.2014, 19:34    Titel: Antworten mit Zitat

wow WOW W O W ... also .. das is schon recht komplex, was du da so vor hast ... gaaaanz so weit hab ich das jetzt aber nicht gemeint ...

ich meitne das eher so in richtung:

arduino:
Programm schreiben das wie bisher bei dir arbeitet +
* Rs232 schnittstelle erzeugen
* rs232 schnitstelle auf daten hin überwachen
* wenn daten kommen, dann auswerten und entsprechende zeit-parameter anpassen.

was du vorschlgst ist ja schon fast ein kompletter interpreter, der einen quellcode in ausführbare befehle umsetzt. also .. DAS is schon n bissi overblowed für diese aufgabe! zwinkern


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muecke
Gast





BeitragVerfasst am: 24.01.2014, 19:38    Titel: Antworten mit Zitat

hmm Ok, da haben meine Grauenzellen doch zu schnell Schwung auf genommen, ich verstehe was du meinst,

bis jetzt arbeitet mein Arduino ja noch nicht, traurig
bei deinem vorschlage ist es dann jedoch nicht möglich Ventil 1 und 2 miteinander in der Reihenvogel zu Tauschen oder etwa doch?
Nach oben
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 24.01.2014, 19:43    Titel: Antworten mit Zitat

naja.. wieso nicht?

das ist einfach eine gestaltungsfrage des arduino programms.

Beispiel:

du hast folgende Vorgaben:
* Zeit einstellen

entsprechend planst du ein programm:
Code:

dim TZeit as integer
'tu was
sleep tzeit
'tu das nächste



erweiterst du deine vorgaben musst du auch das arduino prog erweitern.

Code:

dim tzeit1 as integer
dim tzeit2 as integer
'tu was
sleep tzeit1
'tu nochwas
sleep tzeit2
'und nochwas


wenn du dann noch reihenfolgen ändern willst, ist natürlich auch hier das prog entsprechend zu erweitern

Code:

dim tzeit1 as integer
dim tzeit2 as integer
dim ttauschen as integer
'tu was
sleep tzeit1
if ttauschen = 0 then
   'tu erst a
   sleep tzeit2
   'tu dann b
else
   'tu erst b
   sleep tzeit2
   'tu dann a
end if

usw.

was du dann in die entsprechenden variablen schreibst, wird dann durch die daten der rs232 bestimmt.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muecke
Gast





BeitragVerfasst am: 26.01.2014, 11:35    Titel: Antworten mit Zitat

OK, ich glaube ich habe es verstanden also muss ich mir erst ein mal mit dem Arduino und dessen Programmierung beschäftigen denn da muss das Richtige Interface drauf Programmiert werden so das ich über die RS232 überhaupt ein Protokoll an das Arduino senden kann und es das annimmt ...
wenn ich das habe kann ich das Programm im FB schreiben mit dem ich die Daten die gesendet werden mit einer Grafischen Oberfläche einstellen kann.


OK da kommt etwas Arbeit auf mich zu, ... habe gehofft da gibt es eine API oder so was ... schade.
Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz