Re: Ein- Ausgabe beim Arduino
Verfasst: Di 30. Jun 2020, 08:38
Und so sieht das Gehäuse zusammengesteckt aus. Das Material ist Hartschaum-PVC 3mm.
Forum zur gegenseitigen Hilfe für Hobby´s, Spass und Technik, im Raum Penzberg, Garmisch, Bad Tölz, Seeshaupt
https://www.franzls-technik-forum.de/
Das ist die Serial Schnittstelle. Ich glaube, ich habe mit 9600 gearbeitet. Geht sicher auch erheblich schneller. Aber man hat ja nur Daten, keine Grafiken oder sonst was großes. Man hat die Grafische Oberfläche ja voll und ganz auf dem Nextion. Was man über die Schnittstelle schiebt sind Daten die man aus dem Arduino auf dem Display ausgeben will, und die andere Richtung, Daten die man am Display eingibt und an den Arduino weitergibt. Das Problem war eigentlich zum Beispiel diese Scalen Grafisch zu erstellen, die ich hier gezeigt habe. Die Scala ist eine Grafik wie man will und der Zeiger ist ein Strich der sich wie ein Zeiger dreht. Ich finde es schade, dass es von Nextion keine Dateien gibt mit Bildern die man am Nextion nutzen kann. Das würde viel erleichtern, und dann auch viel mehr Leute zum Nextion bringen. Vielleicht auch ein paar fertige Display Seiten, mit Grafiken die man für seine Programme nutzen kann. Man kann ja beim Nextion so viele Bildschirmseiten vorbereiten wie man will, und die dann von Arduino aus auswählen. Man wählt also am Arduino dann nur noch eine Seite aus, die erscheint dann extrem schnell am Display, dort kann man dann zum Beispiel auf einer Daten - Eingabemaske irgend was eingeben, abschicken, und schon hat man die Daten am Arduino. Dann sagt der Arduino, dass jetzt eine andere Maske am Display ausgegeben wird, u.s.w.
Ich schätze mal, mit dem Gehäuse fräsen ist man besser beraten als mit dem 3D Druck. Mir gehen eigentlich drei Maschinen ab. Eine 3D Fräse, eine Tischdrehbank und ein Schutzgas Schweißgerät. Naja o.k., vielleicht auch noch der 3D Drucker, denn manche Teile sind besser auszudrucken, als zu fräsen. Zahnräder zum Beispiel. Das zu meiner Elektronischen Ausrüstung, dann wäre ich gut aufgestellt. Und man würde mich wohl immer am Abend aus der Werkstatt zerren müßen, weil ich dann immer was zu tun hätte.
Code: Alles auswählen
// #define STICK_R // reverse
// Geber Menue 1
const byte MX1 = A0;
const byte MY1 = A1;
const byte TASTER1 = 20; // Interrupt 1
// VCC
// GND
// INTERRUPTSTEUERUNG -----------------
pinMode(TASTER1, INPUT_PULLUP);
// Taster Interrupt
attachInterrupt(digitalPinToInterrupt(TASTER1), Menue_Button, FALLING);
Code: Alles auswählen
#ifndef STICKGEBER_H_
#define STICKGEBER_H_
boolean stick1 = 0; // Stick Steuerung
int pinold = 0; // Stick zurücksetzen durch letzten Stick
// #######################################################################
int stick(int pin, int min, int max, int St_wert) // stick + - 1 vortlaufend
{
#ifdef STICK_R
if(analogRead(pin) > 700 )
St_wert++;
if(analogRead(pin) < 200 )
St_wert--;
#else
if(analogRead(pin) > 700 )
St_wert--;
if(analogRead(pin) < 200 )
St_wert++;
#endif
if(St_wert > max ) St_wert = max;
if(St_wert < min ) St_wert = min;
return St_wert;
}
// -----------------------------------------------------------------------
int stickTast(int pin, int min, int max, int St_wert)
{ // INT um genau 1 verändern
#ifdef STICK_R
if(analogRead(pin) > 700 && stick1 == 0)
{
St_wert++;
stick1 = 1;
pinold = pin;
}
if(analogRead(pin) < 200 && stick1 == 0)
{
St_wert--;
stick1 = 1;
pinold = pin;
}
#else
if(analogRead(pin) > 700 && stick1 == 0)
{
St_wert--;
stick1 = 1;
pinold = pin;
}
if(analogRead(pin) < 200 && stick1 == 0)
{
St_wert++;
stick1 = 1;
pinold = pin;
}
#endif
if(analogRead(pin) <650 && analogRead(pin) >250 && pin == pinold)
{
stick1 = 0;
}
if(St_wert > max ) St_wert = min;
if(St_wert < min ) St_wert = max;
return St_wert;
}
// -----------------------------------------------------------------------
float stickTastF(int pin, float min, float max, float St_wert, float wert)
{ // FLOAT_WERT genau um wert verändern
#ifdef STICK_R
if(analogRead(pin) > 700 && St_wert < max && stick1 == 0)
{
St_wert+=wert;
stick1 = 1;
pinold = pin;
}
if(analogRead(pin) < 200 && St_wert > min && stick1 == 0)
{
St_wert-=wert;
stick1 = 1;
pinold = pin;
}
#else
if(analogRead(pin) > 700 && wert > min && stick1 == 0)
{
St_wert-=wert;
stick1 = 1;
pinold = pin;
}
if(analogRead(pin) < 200 && wert < max && stick1 == 0)
{
St_wert+=wert;
stick1 = 1;
pinold = pin;
}
#endif
if(analogRead(pin) <650 && analogRead(pin) >250 && pin == pinold)
{
stick1 = 0;
}
return St_wert;
}
// #######################################################################
#endif /* ALARMS_H_ */
Code: Alles auswählen
void Menue_Button()
{
//zurück Hauptmenue
if((menuebutton_old + 500) < millis())
{
menue_ein =! menue_ein; // Hauptmenue oder Untermenue
startbit = 0; // TFT nur beim ersten Aufruf Beschreiben
if (PROG_ein == 1) // Programm-Modus wieder ausschalten
{
PROG_ein = 0 ;
menue_ein = 0 ;
}
menuebutton_old = millis();
}
}
Code: Alles auswählen
// Einstellungen Schieberegister
// Anzahl der Ausgänge (in 8er Schritten)
int anzSh = 36;
// verbunden mit SH_CP (pin 11) des 74HC595
#define shiftPin 12
// verbunden mit ST_CP (pin 12)des 74HC595
#define storePin 11
// verbunden mit DS (pin 14) des 74HC595
#define dataPin 10
Code: Alles auswählen
void SHIFTOUT() {
int e = anzSh-1;
int i;
digitalWrite(storePin, LOW);
for (i=e; i > -1; i--) {
digitalWrite(shiftPin, LOW);
digitalWrite(dataPin, OUT[i]);
digitalWrite(shiftPin, HIGH);
}
digitalWrite(storePin, HIGH);
}
Code: Alles auswählen
#include <Adafruit_ADS1015.h> // Hardware-specific library ADS1015/ADS1115
Adafruit_ADS1115 ads0 (0x48);
Adafruit_ADS1115 ads1 (0x49);
Code: Alles auswählen
void lese_sensoren()
{
int16_t adc0, adc1, adc2, adc3, adc4, adc5, adc6, adc7;
adc0 = ads0.readADC_SingleEnded(0);
adc1 = ads0.readADC_SingleEnded(1);
...
adc4 = ads1.readADC_SingleEnded(0);
...
adc7 = ads1.readADC_SingleEnded(3);
}