Code – die besten Beiträge

Arduino Code funktioniert nicht?

IRremote und JoyStick funktionieren nicht

#include <SPI.h> // Bibliothek für SPI-Kommunikation

#include <Mirf.h> // Bibliothek für nRF24L01

#include <nRF24L01.h> // Treiber für nRF24L01

#include <MirfHardwareSpiDriver.h> // Hardware-SPI-Treiber für Mirf

#include <IRremote.h> // Bibliothek für IR-Kommunikation

// Pin-Definitionen

int receiver = 4; // Pin für den IR-Empfänger

const int SW = 2; // Pin für den Schalter

const int X = A0; // Analog-Pin für X-Achse

const int Y = A1; // Analog-Pin für Y-Achse

// Initialisierung des IR-Empfängers

IRrecv irrecv(receiver);

IRsend results;

uint32_t last_decodedRawData = 0; // Variable zum Speichern des letzten IR-Codes

// Funktion zur Verarbeitung des empfangenen IR-Codes

void translateIR() {

 if (irrecv.decodedIRData.flags) {

  // Wenn ein Wiederholungscode empfangen wird, den letzten empfangenen Code verwenden

  irrecv.decodedIRData.decodedRawData = last_decodedRawData;

 } else {

  // Den empfangenen Code im seriellen Monitor ausgeben

  Serial.print("Empfangener IR-Code: 0x");

  Serial.println(irrecv.decodedIRData.decodedRawData, HEX);

 }

}

// Setup-Funktion, die einmal beim Starten des Programms ausgeführt wird

void setup() {

 Serial.begin(9600); // Startet die serielle Kommunikation mit 9600 Baud

 irrecv.enableIRIn(); // Aktiviert den IR-Empfänger

 pinMode(SW, INPUT); // Setzt den Schalter-Pin als Eingang

 digitalWrite(SW, HIGH); // Aktiviert den Pull-up-Widerstand für den Schalter

 Mirf.cePin = 9; // Setzt den Chip Enable (CE) Pin für den nRF24L01

 Mirf.csnPin = 10; // Setzt den Chip Select Not (CSN) Pin für den nRF24L01

 Mirf.spi = &MirfHardwareSpi; // Setzt den SPI-Treiber für Mirf

 Mirf.init(); // Initialisiert den nRF24L01

 Mirf.setRADDR((byte *)"Sen01"); // Setzt die Adresse des Senders

 Mirf.payload = sizeof(unsigned int); // Setzt die Payload-Größe auf die Größe eines unsigned int

 Mirf.channel = 3; // Setzt den Kommunikationskanal auf 3

 Mirf.config(); // Konfiguriert den nRF24L01

}

unsigned int adata = 0; // Variable zum Speichern der zu sendenden Daten

// Hauptschleife, die kontinuierlich ausgeführt wird

void loop() {

 // Überprüfen, ob ein IR-Signal empfangen wurde

 if (irrecv.decode()) {

  translateIR(); // Verarbeitung des empfangenen IR-Codes

  irrecv.resume(); // Bereit zum Empfang des nächsten IR-Codes

 }

 // Lesen des Schalter- und Analogwerte

 int swValue = digitalRead(SW); // Lesen des Schalterzustands

 int xValue = analogRead(X); // Lesen des X-Achsen-Werts

 int yValue = analogRead(Y); // Lesen des Y-Achsen-Werts

 // Überprüfen der empfangenen IR-Codes und Setzen von adata entsprechend

 if (last_decodedRawData == 0xAD52FF00) {

  adata = 12006;

 } else if (last_decodedRawData == 0xBF40FF00) {

  adata = 12005;

 } else if (last_decodedRawData == 0xBC43FF00) {

  adata = 12004;

 } else if (last_decodedRawData == 0xBB44FF00) {

  adata = 12003;

 }

 // Überprüfen des Schalterwerts und Setzen von adata

 if (swValue == 0) {

  adata = 2103;

 }

 // Überprüfen der Analogwerte und Setzen von adata

 if (yValue < 1024 && yValue > 6 && xValue > 150 && xValue < 800) {

  adata = 213;

 } else if (yValue < 512 && yValue > -1 && xValue > 200 && xValue < 700) {

  adata = 312;

 } else if (xValue < 509 && xValue > -1 && yValue > 200 && yValue < 750) {

  adata = 231;

 } else if (xValue < 1024 && xValue > 515 && yValue > 450 && yValue < 750) {

  adata = 321;

 } else if (xValue < 514 && xValue > 510 && yValue < 511 && yValue > 507) {

  adata = 123;

 }

 // Senden der Daten über Mirf, wenn adata gesetzt wurde

 if (adata != 0) {

  byte data[Mirf.payload]; // Array zum Speichern der zu sendenden Daten

  data[0] = adata & 0xFF; // Niedriges Byte von adata

  data[1] = adata >> 8; // Hohes Byte von adata

  Mirf.setTADDR((byte *)"Rec01"); // Setzt die Adresse des Empfängers

  Mirf.send(data); // Sendet die Daten

  while (Mirf.isSending()) {} // Warten, bis das Senden abgeschlossen ist

  delay(20); // Kurze Pause, um das Senden zu beenden

  adata = 0; // Zurücksetzen von adata nach dem Senden

 }

}

Arduino, Code, Programmiersprache, Arduino Uno, Arduino IDE

Customtkinter "master" Parameter beim erstellen von einem Textfeld?

Hey,

ich habe eine Klasse erstellt die ein Hauptfenster erstellt und möchte aus einer anderen klasse einen Textfeld erstellen der sich auf das Hauptfenster bezieht.
So wie ich es verstanden habe braucht man dafür den Parameter "master" um vorzugeben in welchem Fenster nun der Textfeld angezeigt werden soll.
Leider funktioniert das bei mir nicht so richtig. Hat jemand davon Ahnung und kann mir meinen Fehler zeigen?
lieben Dank! :)

main.py

import view
import controller
import customtkinter as ctk

class Main(view.MainWindow):
   def __init__(self):
       super().__init__()
       self.main_window = view.MainWindow()
       self.main_window.set_size("1680", "900")
       self.main_window.set_title("YourTerminal")
       controller.InputBoxMain()# Nach meinem Verständnis muss hier der Master-Parameter angegeben werden. Wie übergebe ich diesen?

   def run(self):
       self.main_window.get_window().mainloop()

if __name__ == "__main__":
    app = Main()
    app.run()

view.py

import customtkinter as ctk


class MainWindow:
   def __init__(self):
       self.window = ctk.CTk()

   def set_size(self, width, height):
       self.window.geometry(f"{width}x{height}")

   def set_title(self, title):
       self.window.title(title)

   def get_window(self):
       return self.window

class WindowTemplate:
   def __init__(self):
       self.window = ctk.CTkToplevel()

   def set_size(self, width, height):
       self.window.geometry(f"{width}x{height}")

   def set_title(self, title):
       self.window.title(title)

   def get_window(self):
       return self.window

# der master Parameter gibt an wo diese Box angezeigt werden soll
class InputBoxTemplate:
    def __init__(self, master):  # Wie übergebe ich den master Parameter?
        self.master = master
        self.box = ctk.CTkEntry(self.master)

    def set_size(self, width, height, y, x):
        self.box.place(width=width, height=height, pady=y, padyx=x)

    def set_placeholder(self, placeholder):
        self.box._placeholder_text(f"{placeholder}")

controller.py

import view
import customtkinter as ctk
import main
class InputBoxMain(view.InputBoxTemplate, main.Main):
    def __init__(self):
        super().__init__()
        self.master = ctk.CTk()
        self.window = view.InputBoxTemplate(self.master)# Oder der Master-Parameter wird hier übergeben? Hier versuche ich master auf ctk.CTk zu beziehen. Das ist das Haupfenster.
        self.window.set_size(200, 200, 10, 10)
        self.window.set_placeholder("Hier steht der Placeholder")

Hier die Fehlermeldung falls relevant:

Traceback (most recent call last):

 File , line 1, in <module>

  import view

 File , line 2, in <module>

  import main

 File , line 2, in <module>

  import controller

 File " line 4, in <module>

  class InputBoxMain(view.InputBoxTemplate, main.Main):

            ^^^^^^^^^^^^^^^^^^^^^

AttributeError: partially initialized module 'view' has no attribute 'InputBoxTemplate' (most likely due to a circular import)

Code, Programmiersprache, Python, Python 3, Objektorientierte Programmierung, Tkinter, Pycharm

Wie kann ich meinen Fehler beheben?

Hallo,

ich habe ein Problem mit meinem Code. Meine Simulation eines kleinen Roulette Spiels funktioniert nicht . Wenn man zwei mal auf eine Farbe wettet gewinnt man ab dem zweiten mal immer auch wenn man verlieren müsste. Man bekomt drotzdem Geld zugeschrieben die erste Runde funktioniert aber.

Ich bin noch am Anfang mit dem Programmieren und arbeite mit studio.code.org.

Der Code:

onEvent("btn_Roulette_drehen", "click", function() {
 var wettbetrag_roulette = getText("tinput_wettbetrag");
 if (wettbetrag_roulette > points || 0 >= wettbetrag_roulette) {
  wettbetrag_roulette = -1;
  setText("lbl_status_r.", "Du hast zu viel oder garnichst gewettet!");
  setText("tinput_wettbetrag", "");
 } else if ((points >= wettbetrag_roulette)) {
  if (getText("dr_user_game_color") !== "Keine" || getText("dr_user_game_number") !== "Keine") {
   if (getText("dr_user_game_color") != "Keine" && getText("dr_user_game_number") != "Keine") {
    setText("lbl_status_r.", "Nur eine Sache Wetten!");
   } else {
    setText("lbl_status_r.", "Dreht");
    user_number_game_input = getText("dr_user_game_number");
    user_color_game_input = getText("dr_user_game_color");
    var roulette_gewinnzahl = randomNumber(1, 36);
    var rote_zahlen = [1, 3, 5, 7, 9, 12, 14, 16, 18, 19, 21, 23, 25, 27, 30, 32, 34, 36];
    var ist_rot = false;
    for (var i = 1; i < rote_zahlen.length; i++) {
     if (roulette_gewinnzahl === rote_zahlen[i]) {
      ist_rot = true;
      roulette_gewinnfarbe = "rot";
      break;
     }
    }
    if (ist_rot) {
     setText("lbl_status_r.", "Es gewinnt rot und die Zahl " + roulette_gewinnzahl);
    } else {
     setText("lbl_status_r.", "Es gewinnt schwarz und die Zahl " + roulette_gewinnzahl);
    }
    if (roulette_gewinnfarbe != "rot") {
     roulette_gewinnfarbe = "schwarz";
    }
    if (roulette_gewinnzahl == user_number_game_input) {
     money = money +wettbetrag_roulette*36;
     points = points-wettbetrag_roulette;
      
      
      
      
      
     setText("lbl_status_r.", "Du hast gewonnen!!!!(" + roulette_gewinnzahl + roulette_gewinnfarbe +")");
     setText("lbl_money_counter", "Money:" + money);
     setText("lbl_score_counter", "Score" + points);
      
    } else if ((roulette_gewinnfarbe == user_color_game_input)) {
     points = points-wettbetrag_roulette;
     money = money + wettbetrag_roulette*2;
     setText("lbl_money_counter", "Money:" + money);
     setText("lbl_score_counter", "Score:" + points);
    } else {
     points = points-wettbetrag_roulette;
     setText("lbl_score_counter", "Score:" + points);
    }
   }
    
  } else {
   setText("lbl_status_r.", "Nichts ausgewählt!");
  }
 }
});
Fehler, Programm, JavaScript, Bug, Code

Meistgelesene Beiträge zum Thema Code