Couchtisch mit Getränke Funktion. Programmierhilfe!

Ich bin ein kompletter Anfänger, was das Programmieren von Arduinos angeht. Trotzdem will ich ein kleines Projekt umsetzen. Ich will mir nämlich einen Couchtisch bauen, der die Funktion hat, mir etwas zu trinken einzuschenken. Das Glas soll in den Tisch hineinfahren und dann aufgefüllt werden können. Anschließend fährt es wieder hoch. Das Problem ist jedoch, dass ich überhaupt keine Ahnung habe, wie ich den Arduino programmieren soll, damit er so etwas macht. Online habe ich mir bereits einen Arduino UNO Klon von AZ-Delivery und eine 8-Kanal-Relaiplatine bestellt. Die beiden Sachen sind heute sogar angekommen. Ich habe es bereits geschafft, den Arduino so zu programmieren, dass ich mit Hilfe der Relais einen Lüfter im 1-Sekunden-Rhythmus an- und ausschalten konnte. Leider ist mir durch einen Fehler der Arduino durchgebrannt. Nächstes Mal würde ich den Code gerne so schreiben, dass ich einen Knopf an Pin 2 anschließen kann, der 4 verschiedene Funktionen hat. Der Knopf soll einmal, zweimal, dreimal und viermal drückbar sein. Bei jedem Druckrhythmus soll ein anderer Code ausgeführt werden, der dann meine Pumpen und Motoren in dem Tisch ansteuert. Könnt ihr mir dabei helfen, diesen Code zu schreiben? Denn ich finde einfach kein gutes Tutorial dazu.

Dieses Video hat mich inspiriert:

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden.
Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.
mfg ein Moderator.

https://de.wikibooks.org/wiki/Arduino:_Programmiertechniken/Statemaschine#Version_4

Hier wird so was ähnliches gemacht. Es wird ein Klick, Doppelklick oder halten erkannt. Halten müsste raus, dafür dann (wie bei den Doppelklick) Drei- und Vierfachklick hinzugefügt werden.

1 Like

Der code ist für mich sehr schwer zu verstehen. Gibts da nicht etwas einfacheres. Eigentlich möchte ich ja nur vier freie felder bei dennen ich meinen eigenen code reinschreiben kann um bei der jeweiligen druckanzahl den dazu passenden Code aus zu führen. Außerdem möchte ich pin 3 bis 10 als output in kommbination mit dem 5v anschluss zur Steuerung der relais verwenden.

Nimm eine Suchmaschine deiner Wahl und befrage das WWW mit "arduino in blöcken programmieren".

Viel Erfolg

Schaue mal ob du mit diesem Sketch klar kommst:

type//https://forum.arduino.cc/t/couchtisch-mit-getranke-funktion-programmierhilfe/1171146
//https://europe1.discourse-cdn.com/arduino/original/4X/7/e/0/7e0ee1e51f1df32e30893550c85f0dd33244fb0e.jpeg
#define ProjectName "Couchtisch mit Getränke Funktion"
#define NotesOnRelease "1"
// -- some useful text replacements used
#define equ ==
#define nequ !=
#define mod %
#define view(x) Serial.println(x)
// make variables
constexpr uint8_t Button {A0};  // [port] --- [button] --- [gnd]
constexpr void (*task[])() {
  task0, task1, task2, task3
};
// make support
void heartBeat(int LedPin, uint32_t currentMillis)
{
  static bool setUp = false;
  if (!setUp) pinMode (LedPin, OUTPUT), setUp = !setUp;
  digitalWrite(LedPin, (currentMillis / 500) % 2);
}
// make application
void task0()
{
  view (__func__);
};
void task1()
{
  view (__func__);
};
void task2()
{
  view (__func__);
};
void task3()
{
  view (__func__);
};

void setup()
{
  Serial.begin(115200);
  Serial.print("Source: "), Serial.println(__FILE__);
  Serial.print(ProjectName), Serial.print(" - "), Serial.println(NotesOnRelease);
  pinMode(Button, INPUT_PULLUP);
  Serial.println(" =-> and off we go\n");
}
void loop()
{
  uint32_t currentMillis = millis();
  heartBeat(LED_BUILTIN, currentMillis);
  static uint8_t taskNummer = 0;
  constexpr uint32_t delayDebounce = 20;
  static uint32_t nowDebounce = currentMillis;
  if ( currentMillis - nowDebounce >= delayDebounce)
  {
    nowDebounce = currentMillis;
    uint8_t stateNew = digitalRead(Button) ? LOW : HIGH;
    static uint8_t stateOld = LOW;
    if (stateOld nequ stateNew)
    {
      stateOld =  stateNew;
      if (stateNew equ HIGH)
      {
        task[taskNummer]();
        taskNummer = (taskNummer + 1) mod (sizeof(task) / sizeof(task[0]));
      }
    }
  }
}  

was für einen?
ich meine "zeige was du hast"

Def code der die relais ansteuert, also mit High und low und dazwischen kommen ein paar delays. Bringt mir aber jetzt eh nichts mehr weil mir das kleine scheiss teil womöglich den ganzen PC geschrottet hat. Immer wenn ich ihn anschalten will kommt eiene warnmeldung die mir sagt das eine überspannung erkannt wurde und mein pc in 15 sekunden runterfährt.

Lass mal einen Virenscanner laufen.

vermutlich kamst du auf die Idee alles auf ein winziges USB Port zu hängen. Besorge dir eine andere Strom Quelle für Relays. Da gib es wahrscheinlich ein rauszihbares Jumper für Entkoppelung.
ein Powerbank oder Handyladegerät wäre schon genug.

Die relais laufen über 12v und sind über ein netzteil mit 400w netzteil angeschlossen.

Hier ein Video dazu: https://youtu.be/vwGqEpu-g_8?si=2lD2F9LQgk54DSzF

Hat ein moddernes Motherboard Schutzmechanismen um die Grafikkarte, den prozessor und sonstiges zu schützen?

was elektrische Ursachen betrifft - ja. von Uberstromschutz am USB port bis Netzteil das alle Spannungen überwacht und schaltet aus wenn etwas "krum läuft". konkrete Angaben zu deinen konkreten Grafikkarte kann niemand machen.

Das du dich ärgerst wenn jetzt der PC nicht mehr funktioniert kann ich gut verstehen.
Die Ursache ist aber nicht "das kleine Scheissteil" (= der Arduino) den PC geschrottet hat
sondern eher die Unerfahrenheit von dir in Kombination mit der schlampigen Realisierung
Bei so viel zuuu lang abisolierten Leitungen
image
Muss das irgendwann zu einem Kurzschluss kommen.

Das Board scheint sogar Optokoppler zu haben mit denen man eine galvanische Trennung zwischen Steuerspannung und Schaltspannung vornehmen kann eigentlich gute Vorraussetzungen wenn man das Datenblatt sorgfältig gelesen hat und alle Details entsprechend umgesetzt hat.

Die Mikrokontroller-Welt ist nicht suuuper-standardisiert wie USB-Geräte.
Man muss sich um mehr Details kümmern als nur
"Passt der Stecker in die Buchse?"

1 Like

Nächstes mal isolier ich die kabel kürzer ab und steck den arduino immer in ein externes netzteil.
Kann mir vielleicht jemand mit diesem fehler helfen? Immerhin komm ich jetzt nicht mehr in meinen PC rein. 500 Euro für eine Reperatur möchte ich jetzt umbedingt auch nicht ausgeben.
Den Pc habe ich selber zusammengebaut und der war mit über 2000euro auch nicht gerade günstig, also würde ich mich über Hilfe freuen.

Das ist zwar richtig, aber da wartet dann das nächste Problem für deinen PC, wenn der Arduino eigenversorgt ist und du dann mit dem USB Kabel verbindest. Du solltest bei deinen Basteleien jemanden dazu nehmen, der bischen Ahnung hat von Elektrotechnik. Wenn ich das Bild sehe, wie du die Spannung anklemmst, bekomme ich nen Schreikrampf. Und dir bei deinem PC helfen, das kann man nur wenn man am selben Tisch sitzt.

Messe mal die 5 Volt USB Spannung, die aus deinem PC kommt. Ob das noch 5 Volt sind. Mit einem USB Stecker der Plus und Minus rausführt. Aber mit nichts von deinem Arduino Zeug angeschlossen. Messgerät dran, und dann PC einschalten. Und keine solchem Pfuschverbindungen, denn dann kannst du das ganze auch abkürzen, indem du mit nem Vorschlaghammer auf deinen PC einschlägst.

Übrigens reicht so ein 33 Ampere Netzteil, wie du es offenbar hast (400Watt, 12 Volt), auch dafür, ein ganzes Haus abzufackeln, wenn man nicht weiß was man tut.

Wie so oft, sitzt das Problem vor dem Monitor.
Und du solltest lernen, das es einen Unterschied zwischen Spannung und Strom gibt.

Laut der gezeigten Meldung ist dein Problem, dass deine Schaltung zu viel Strom zieht und nicht zu hohe Spannung liefert.

Dann solltest du doch wissen, wie und was da zu reparieren ist.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.