C (Programmiersprache) – die neusten Beiträge

Wie weiße Linien auf Display bei Arduino UNO entfernen?

Ich habe mir das "LAFVIN 3.5 inch TFT LCD Touch Display Shield Module 480x320 SPI Serial ILI9488 with Touch Pen Compatible with Arduino" (Link Unten) gekauft und wollte es mit dem Arduino Uno ansteuern. Da ich in dem Bereich noch eher unerfahren bin und zu diesem speziellen Display keinerlei Daten online sind, habe ich ChatGPT gebeten einen Testcode dafür zu schreiben:

#include <TFT_eSPI.h>
#include <SPI.h>

TFT_eSPI tft = TFT_eSPI(); // Verwende die Setup-Datei

void setup() {
 tft.init();
 tft.setRotation(1); // 0-3
 tft.fillScreen(TFT_BLACK);
 tft.setTextColor(TFT_WHITE, TFT_BLACK);
 tft.setTextSize(2);
 tft.setCursor(50, 100);
 tft.println("LAFVIN ILI9488 Test!");
 delay(2000);
 // Farbtest
 tft.fillScreen(TFT_RED);
 delay(500);
 tft.fillScreen(TFT_GREEN);
 delay(500);
 tft.fillScreen(TFT_BLUE);
 delay(500);
 tft.fillScreen(TFT_BLACK);
}

void loop() {
 tft.drawCircle(random(320), random(240), random(10, 30), TFT_YELLOW);
 delay(100);
}

Die KI meinte noch ich soll die User_Select.h-Datei in der TFT_eSPI-Librarie mit dem folgenden Text ersetzen:

#define ILI9488_DRIVER
#define TFT_CS  10
#define TFT_DC  9
#define TFT_RST 8
#define TFT_MOSI 11
#define TFT_SCLK 13
#define TFT_MISO 12
#define LOAD_GLCD
#define LOAD_FONT2
#define LOAD_FONT4
#define LOAD_FONT6
#define LOAD_FONT7
#define LOAD_FONT8
#define LOAD_GFXFF
#define SPI_FREQUENCY 20000000

Der Sketch scheint zu funktionieren (macht was es soll etwas verblast im Hintergrund) allerdings sind im Vordergrund 2 weiße Linien, die sich über das ganze Display ziehen. Alles ist richtig verkabelt:

VCC -5V GND -GND CS- D10 RESET- D8 DC / RS- D9 SDI / MOSI-D11 SCK -D13 LED -5V (über 100Ω) T_CLK - D13 (geteilt) T_CS- D6 T_DIN - D11 (geteilt) T_DO -D12 T_IRQ -Nicht nötig SDO / MISO - D12

An der Hardware kann es auch nicht liegen, da es beim Neustart des Codes, das Display komplett grün färbt, ohne Linien.

Kann mir da jemand bitte helfen?

Link:

https://www.amazon.de/LAFVIN-3-5-inch-TFT-Compatible/dp/B0CQ86T4S9?crid=20WS4KEIOKM1W&dib=eyJ2IjoiMSJ9.J68Ud1C-2nuVCTfL1PxAptfxyB7uGufPDC4iW-x7GS-26tlMEMiJWmaDdIMuBL-Se6Eh-sHANAYNWQYHJhBrouXdfH1srpKN22RU_T9E7FIn-AA_DYVxtWLkYixHTD1oQY_8O0hoYSwvCIusxjze4ckHNoM2NzshzWsuIdxs0nqjFzmtI4-8U-1GqxbEJLwwUbOQ-Yw19sTBZWwVlOBFXWjHIw4QmAE-5DDASf0kEeLT7ktosacJVZEpZsTudJL-zTZzUi4sDUoopEOggP1cY-2F4R5JAbM9ulQB0ehxA3k.pRKfnBU0tCah9ij3m03vj538RU03jJpVmE7MyP249EU&dib_tag=se&keywords=arduino%2Bdisplay&qid=1747677201&refinements=p_36%3A-1700&rnid=82947031&sprefix=arduino%2Bdi%2Caps%2C108&sr=8-11&th=1

Bild zum Beitrag
programmieren, Arduino, C, C (Programmiersprache), Arduino Uno, Arduino IDE

verständinsproblem addressausgabe dynamische Liste?

Hallo,

ich habe eine Liste in C erstellt, dies scheint wohl zu funktionieren, allerdings habe ich ein Problem mit der Ausgabe der Adresse der einzelnen Elemente in der Liste

Zunächst rufe ich für alle Files die Funktion "appenFileName_v" auf.
zum schluss rufe ich dann noch einmal die Funktion: "printList_v" auf um zu überprüfen ob alle elemente vorhanden sind

struct fileList_ts
{
  char* name;
  struct fileList_ts* next;
};
static struct fileList_ts* fileList_ps = NULL;
static void appendFileName_v(char* value)
{
  struct fileList_ts *newElement_ps;
  if (fileList_ps == NULL) // check if there is already an element in the list
  {
    if((fileList_ps = malloc(sizeof(struct fileList_ts))) == NULL)
    {
      ESP_LOGE(TAG, "no free memory for starting list");
    }
    else
    {
      ESP_LOGI(TAG, "address fileList_ps: %p", &fileList_ps);
      fileList_ps->name = (char *)malloc(strlen(value) + 1);
      strcpy(fileList_ps->name, value);
      fileList_ps->next = NULL;
    }
  }
  else
  {
    newElement_ps = fileList_ps; // point to first element
    while(newElement_ps->next != NULL) // go to last element
    {
      newElement_ps = newElement_ps->next;
    }
    if((newElement_ps->next = malloc(sizeof(struct fileList_ts))) == NULL) // reserve memory for the new element
    {
      ESP_LOGE(TAG, "no free memory for the new element");
    }
    else
    {
      newElement_ps = newElement_ps->next; // point to new memory
      newElement_ps->name = (char *)malloc(strlen(value) + 1);
      ESP_LOGI(TAG, "address newElement: %p", &newElement_ps);
      strcpy(newElement_ps->name, value);
      newElement_ps->next = NULL;
    }
  }
}

static void printList_v(void)
{
    struct fileList_ts *pointer = fileList_ps;
    while(pointer != NULL) {
        ESP_LOGI(TAG, "printList: %p %s", &pointer, pointer->name);
        pointer = pointer->next;
   }
}


Die Ausgabe ist dann wie folg:

I (634) SD_CARD: address fileList_ps: 0x3ffb2fbc  SYSTEM~1
I (634) SD_CARD: address newElement: 0x3ffb8f10  HELLO.TXT
I (634) SD_CARD: address newElement: 0x3ffb8f10  FOO.TXT
I (634) SD_CARD: address newElement: 0x3ffb8f10  DREIECK.BMP
I (644) SD_CARD: address newElement: 0x3ffb8f10  DREIECK.PNG
I (644) SD_CARD: address newElement: 0x3ffb8f10  KREUZ.BMP
I (664) SD_CARD: address newElement: 0x3ffb8f10  TEST.BMP
I (664) SD_CARD: address newElement: 0x3ffb8f10  TEST2.BMP
I (664) SD_CARD: printList: 0x3ffb8f10 SYSTEM~1
I (664) SD_CARD: printList: 0x3ffb8f10 HELLO.TXT
I (674) SD_CARD: printList: 0x3ffb8f10 FOO.TXT
I (674) SD_CARD: printList: 0x3ffb8f10 DREIECK.BMP
I (674) SD_CARD: printList: 0x3ffb8f10 DREIECK.PNG
I (694) SD_CARD: printList: 0x3ffb8f10 KREUZ.BMP
I (694) SD_CARD: printList: 0x3ffb8f10 TEST.BMP
I (694) SD_CARD: printList: 0x3ffb8f10 TEST2.BMP

Die Namen sind also alle in der Liste drinn. Nur wundert es mich, dass die Adresse überall die selbe ist.

Code, Programmiersprache, Liste, C (Programmiersprache)

ESP32 Guru Meditation Error: Core 0 panic'ed (LoadProhibited). Exception was unhandled?

Hallo,

ich habe ein Problem mit meinem Code auf einem ESP32.
ich habe einen array von struct, welchen ich beschreiben möchte:

file_1.c

typedef struct{
  uint8_t green;
  uint8_t red;
  uint8_t blue;
}ledStrip_ts;
... ... ...
static ledStrip_ts lightbar_as[100];
... ... ...
      if (true == getPixelData_b(&graphicData_s.numOfCols_u32, &graphicData_s.numOfRows_u32, (uint8_t*)&lightbar_as[0]))... ... ...  

file_2.c:

bool getPixelData_b(uint32_t* numOfCols_pu32, uint32_t* numOfRows_pu32, uint8_t* pixelData_pu8)
{
.... .... ....
                bmpColorData_ps = bmpGetGraphicData_v(numOfCols_pu32, numOfRows_pu32);
                ESP_LOGI(TAG, "%p    numOfCols_pu32: %lu  numOfRows_pu32: %lu", bmpColorData_ps, *numOfCols_pu32, *numOfRows_pu32);
... ... ...
                uint32_t counter1 = 0;
                uint32_t counter2 = 0;
                uint32_t counter3 = 0;
                uint32_t y = 0;
                for(uint32_t x=0; x<(*numOfRows_pu32); x++)
                {
                    for(y=0; y<(*numOfCols_pu32); y++)
                    {
                        pixelData_pu8[counter1++] = bmpColorData_ps[counter2].green;
                        pixelData_pu8[counter1++] = bmpColorData_ps[counter2].red;
                        pixelData_pu8[counter1++] = bmpColorData_ps[counter2].blue;
                        ESP_LOGI(TAG, "r: 0x%02X    g: 0x%02X    b: 0x%02X", pixelData_pu8[counter3+1], pixelData_pu8[counter3], pixelData_pu8[counter3+2]);
                        counter2++;
                        counter3+=3;
                    }
                    counter2 += (4 - (y%4));    // Compression = 0 (BI_RGB): Bilddaten sind unkomprimiert, bedeutet
                                                // "Jede Bildzeile ist durch rechtsseitiges Auffüllen mit Nullen auf ein 
                                                // ganzzahliges Vielfaches von 4 Bytes ausgerichtet." (Wikipedia)
                }
... ... ...

Laut Ausgabe (und das ist richtig, sind es 14x14 pixel.
105 Elemente werden geschrieben, dann bekomme ich den Error.
Doch eigentlich ist mein Buffer doch 100 Elemente * 3 Byte (uint8_t red, green, blue). Also 300 Byte.

Als Ausgabe bekomme ich dann:

I (1414) GRAPHIC: r: 0xFF    g: 0xFF    b: 0xFF
I (1414) GRAPHIC: r: 0xFF    g: 0xFF    b: 0xED
Guru Meditation Error: Core  0 panic'ed (LoadProhibited). Exception was unhandled.


Core  0 register dump:
PC      : 0x400d836e  PS      : 0x00060730  A0      : 0x800d7e4e  A1      : 0x3ffbcf70
A2      : 0x3ffb2e38  A3      : 0x0000013b  A4      : 0x3ffb2e3c  A5      : 0x00000007
A6      : 0x00000077  A7      : 0x0000013b  A8      : 0x0000013d  A9      : 0x3ffb2f74
A10     : 0x00000165  A11     : 0x3ffb2f78  A12     : 0xc0ee0164  A13     : 0x00000586
A14     : 0x3f403a78  A15     : 0x000000ff  SAR     : 0x00000004  EXCCAUSE: 0x0000001c
EXCVADDR: 0xc0ee0164  LBEG    : 0x400014fd  LEND    : 0x4000150d  LCOUNT  : 0xfffffffd




Backtrace: 0x400d836b:0x3ffbcf70 0x400d7e4b:0x3ffbcfc0 0x400d7f3c:0x3ffbcff0 0x40088075:0x3ffbd020
--- 0x400d836e: getPixelData_b at C:/Projekte/ESP32/leuchtstab/main/graphic.c:101


--- 0x400014fd: strlen in ROM
--- 0x4000150d: strlen in ROM


--- 0x400d836b: getPixelData_b at C:/Projekte/ESP32/leuchtstab/main/graphic.c:101
--- 0x400d7e4b: lightbarExec_v at C:/Projekte/ESP32/leuchtstab/main/lightbar.c:116
--- 0x400d7f3c: lightbarTask_v at C:/Projekte/ESP32/leuchtstab/main/lightbar.c:184 (discriminator 1)
--- 0x40088075: vPortTaskWrapper at C:/Espressif/frameworks/esp-idf-v5.4/components/freertos/FreeRTOS-Kernel/portable/xtensa/port.c:139

Wenn ich nur ein 3x2 pixel bild nehme, funktioniert es ohne probleme.

Code, C (Programmiersprache), ESP32

C Programm funktioniert nicht Richtig?

Es geht um folgenden Code:

#include <gtk/gtk.h>
#include <string.h>
// Globale Variablen für die UI-Elemente
GtkWidget *search_entry;
GtkWidget *treeview;
GtkListStore *list_store;
GtkTreeModel *filter_model;
// Beispiel-Lagerbestand
typedef struct {
  const gchar *artikelnummer;
  const gchar *name;
  int bestand;
} Lagerartikel;
// Beispielhafte Lagerartikel
Lagerartikel lager[] = {
  {"1001", "Laptop", 15},
  {"1002", "Maus", 50},
  {"1003", "Tastatur", 30},
  {"1004", "Monitor", 10},
  {"1005", "Drucker", 5},
  {"1006", "USB-Stick", 100}
};
const int lager_size = sizeof(lager) / sizeof(lager[0]);
// Filterfunktion für die Suche
static gboolean filter_func(GtkTreeModel *model, GtkTreeIter *iter, gpointer data) {
  gchar *artikelnummer = NULL;
  gtk_tree_model_get(model, iter, 0, &artikelnummer, -1);
  if (artikelnummer == NULL) {
    return TRUE;
  }
  GtkWidget *search_entry = GTK_WIDGET(data);
  const gchar *search_text = gtk_entry_get_text(GTK_ENTRY(search_entry));
  if (search_text == NULL) {
    search_text = "";
  }
  gboolean visible = TRUE;
  if (strlen(search_text) > 0) {
    visible = g_strrstr(artikelnummer, search_text) != NULL;
  }
  g_free(artikelnummer);
  return visible;
}
// Aktualisiert den Filter, wenn sich der Suchtext ändert
static void on_search_changed(GtkSearchEntry *entry, gpointer user_data) {
  gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(filter_model));
}
// Erstellt die Lagerbestand-Tabelle
static void setup_treeview(GtkBuilder *builder) {
  treeview = GTK_WIDGET(gtk_builder_get_object(builder, "treeview"));
  // Spalten für die TreeView erstellen
  GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
  GtkTreeViewColumn *col1 = gtk_tree_view_column_new_with_attributes("Artikelnummer", renderer, "text", 0, NULL);
  GtkTreeViewColumn *col2 = gtk_tree_view_column_new_with_attributes("Name", renderer, "text", 1, NULL);
  GtkTreeViewColumn *col3 = gtk_tree_view_column_new_with_attributes("Bestand", renderer, "text", 2, NULL);
  gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), col1);
  gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), col2);
  gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), col3);
  // ListStore erstellen und Daten füllen
  list_store = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT);
  for (int i = 0; i < lager_size; i++) {
    GtkTreeIter iter;
    gtk_list_store_append(list_store, &iter);
    gtk_list_store_set(list_store, &iter, 0, lager[i].artikelnummer, 1, lager[i].name, 2, lager[i].bestand, -1);
  }
  // Filtermodell erstellen
  filter_model = gtk_tree_model_filter_new(GTK_TREE_MODEL(list_store), NULL);
  gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(filter_model), filter_func, search_entry, NULL);
  gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), filter_model);
}
// Hauptfunktion
int main(int argc, char *argv[]) {
  gtk_init(&argc, &argv);
  // Glade-Datei laden
  GtkBuilder *builder = gtk_builder_new_from_file("part1.glade");
  // Widgets abrufen
  GtkWidget *window = GTK_WIDGET(gtk_builder_get_object(builder, "main_window"));
  search_entry = GTK_WIDGET(gtk_builder_get_object(builder, "search_entry"));
  // Signal für die Suche
  g_signal_connect(search_entry, "search-changed", G_CALLBACK(on_search_changed), search_entry);
  g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
  // Setup für die TreeView
  setup_treeview(builder);
  // Fenster anzeigen
  gtk_widget_show_all(window);
  gtk_main();
  return 0;
}

Ich benutze Glade um mit c ein interface zu erstelle.
Hier sollen die definierten Lagerartikel nach den Artikelnummern gesucht werden. Wenn man etwa 1002 eingibt bleibt nur 1002 übrig. wenn ich jetzt aber die 2 wegnehme, bleibt nur 1002 und 1003 übrig, obwohl alle angezeigt werden sollten.

Jetzt ist meine Frage, wie ich das beheben kann.
Auch ist folgendes: Bei 1003 zu 100 kommt 1003, 1004, 1005. Bei 1004 zu 100 kommt 1004, 1005, 1006, genau das gleiche bei 1005 und 1006. Nur bei 1001 zu 100 kommt alles

Programmiersprache, C (Programmiersprache)

VS-Code findet Datei zum compilieren im Pfad nicht obwohl der Pfad der im Dateimanager kopierte Pfad zur Datei ist?

Hi, ich lern gerade Programmieren in VS-Code und habe mir als erste Sprache C ausgesucht. Ich versuche jetzt seit gut zwei Tagen, mein erstes kleines miniprogramm was schon automatisch da steht, zum laufen zu bringen, allerdings klappt da etwas nicht, vscode findet nähmlich die datei im angegeben Pfad nicht und spuckt mir immer wieder diese Fehlermeldung im Ausgabe Bereich aus (Bild1) wenn ich es versuche mit code runner zu starten

[Running] cd "c:\Users\LaughBoy\programmieren mit c\" && gcc zweiter_versuch.c -o zweiter_versuch && "c:\Users\Jojo\programmieren mit c\"zweiter_versuch

gcc: error: CreateProcess: No such file or directory

vorher hab ich schon noch den complier MinGW runtergeladen, weil vorher der complier komplett gefehlt hat, damit habe ich dann versucht die datei zu kompilieren und zwar im Terminalbereich mit powershell, da bekomm ich aber immer diese Fehlermeldung:

PS C:\Users\Jojo\programmieren mit c> gcc -o erster_code "C:\Users\Jojo\programmieren mit c\erster_code"  

gcc.exe: error: C:\Users\Jojo\programmieren mit c\erster_code: No such file or directory

gcc.exe: fatal error: no input files

compilation terminated.

[Done] exited with code=1 in 0.074 seconds

ich bin mittlerweile komplett verwirrt und freue mich über Hilfe ich probier auch gerne was anderes von ganz vorne aus falls es an MinGW liegt, hauptsache ich kann endlich Anfangen mit C zu programmieren. Danke im vorraus.

Lg. LaughBoy

Bild zum Beitrag
compiler, Code, Programmiersprache, C (Programmiersprache), Visual Studio Code

Interrupt im Programmablaufplan?

Hey, ich muss gerade für NWT einen PAP zeichnen.in dem Programm kommt auch der interrupt- Befehl vor. Ich weiß aber nicht wie genau ich ihn in den PAP einbauen soll. Der Interrupt-Befehl kommt im setup vor fällt er dann also unter start, so wie die ganzen Deklaration zum Beispiel auch? Wie würdet ihr das machen? Wohin geht der Pfeil dann nieder zurück vom unterprogramm?
meine Idee war diese hier (grobe Skizze, Befehle sind noch nicht eingetragen):

Das Programm hierzu ist übrigens das:

int warteZeit = 500;     
int versagtZeit = 0;
int tasterStatus;
int tasterPin = 2;
int Pin;
int Signal = 0;
int startZeit = 500;
int LED1 = 4;
int LED2 = 5;
int LED3 = 6;
int LED4 = 7;
int LED5 = 8;
int DurchgangsZaehler = 0;

void setup() {
 pinMode(tasterPin, INPUT_PULLUP);         
 pinMode(LED1, OUTPUT);                    
 pinMode(LED2, OUTPUT);
 pinMode(LED3, OUTPUT);
 pinMode(LED4, OUTPUT);
 pinMode(LED5, OUTPUT);
 Serial.begin(9600);                       
 attachInterrupt(digitalPinToInterrupt(tasterPin), tempo, FALLING);     
}

void loop() {
  for ( Pin = LED1; Pin < LED5; Pin++) {  
   digitalWrite(Pin, HIGH);                    
   delay(warteZeit);                         
   digitalWrite(Pin, LOW);                     
   if (Signal == 1) {                       
    for (DurchgangsZaehler = 0; DurchgangsZaehler < 3; DurchgangsZaehler++) { 
     digitalWrite(LED1, HIGH);                
     digitalWrite(LED2, HIGH);
     digitalWrite(LED3, HIGH);
     digitalWrite(LED4, HIGH);
     digitalWrite(LED5, HIGH);
     delay(200);                              
     digitalWrite(LED1, LOW);                
     digitalWrite(LED2, LOW);
     digitalWrite(LED3, LOW);
     digitalWrite(LED4, LOW);
     digitalWrite(LED5, LOW);
     delay(200);                              
    }

    Signal = 0;                              
    warteZeit=startZeit;                       
  }
 }
 for ( Pin = LED5; Pin > LED1; Pin--) {                         
 digitalWrite(Pin,HIGH);
delay(warteZeit);                                                                                      digitalWrite(Pin, LOW);                                       
    if (Signal == 1) {                                          
   for (DurchgangsZaehler = 0; DurchgangsZaehler < 3; DurchgangsZaehler++) {  
     digitalWrite(LED1, HIGH);                                   
     digitalWrite(LED2, HIGH);
     digitalWrite(LED3, HIGH);
     digitalWrite(LED4, HIGH);
     digitalWrite(LED5, HIGH);
     delay(200);                                                
     digitalWrite(LED1, LOW);                                    
     digitalWrite(LED2, LOW);
     digitalWrite(LED3, LOW);
     digitalWrite(LED4, LOW);
     digitalWrite(LED5, LOW);
     delay(200);                                                 
   }
   Signal = 0;                                                   
   warteZeit=startZeit;                                         
  }
 }
 Serial.print("Wartezeit=");                                   
 Serial.println(warteZeit);
}
void tempo() {                                                  
if (digitalRead(tasterPin) == 0 && Pin == 6) {                  
   warteZeit = warteZeit - 50;                                  
   Serial.print("Richtig gedrückt, Wartezeit beträgt nun ");   
   Serial.print(warteZeit);
   Serial.println(" Millisekunden");
 }
 else {                                                       
   Signal = 1;                                                 
}
}

Danke schonmal, falls ihr trotz dieser langen Frage antwortet

Bild zum Beitrag
Cplusplus, Arduino, NWT, Programmiersprache, C (Programmiersprache), PAP, nwt-projekt, Arduino Uno, Arduino IDE

Programmieren in C: Probleme mit der IDE?

Hallo! Im Studienvorbereitungskurs habe ich C gelernt. Wir haben die IDE "Devcpp" genutzt. An der Uni hat auch alles wunderbar geklappt, aber Zuhause bleibt das Programm nicht stehen. Ein "Hello World" z.B. kann ich nicht sehen, weil es die Konsole schließt, sobald das Programm durch ist.

Da das Programm bei mir auch nicht schön dargestellt ist (mit manchen Programmen hat mein Rechner irgendwie ein Problem, dass irgendwas mit der Auflösung nicht stimmt und das Programm irgendwie unscharf ist - aber anderes Thema), habe ich mir gedacht, die IDE zu wechseln und ein paar auszuprobieren.

Ich würde übrigens gerne gute Tipps annehmen. Ich brauche an sich nicht viel, weil ich es erst gelernt habe. Ein Programm, was mir eine Datei erstellt, ein bisschen farbig unterstützt und vielleicht auch bei der Eingabe (automatische zweite Klammer oder so), ein Debugger wäre auch ganz nett, in Python habe ich gern mit dem gearbeitet.. Oh, und ich möchte lokal arbeiten können..

Ich habe dann aber CodeLite und CodeBlocks ausprobiert und das hat irgendwie gar nicht funktioniert.. Ich bekam zwei Mal die Fehlermeldung, dass ich keinen Compiler hätte. In CodeLite kann ich gar nicht erst das Programm ausführen, welches ich geschrieben habe, in CodeBlocks klappt es, aber ich bekomme eine Fehlermeldung ganz am Anfang, dass der Complier fehlt und der Debugger ist ausgegraut.

Ich habe mich damit überhaupt nicht beschäftigt, sondern wollte einfach nur ein paar simple Programme rein aus Spaß ander Freude programmieren, ich bin ein wenig verunsichert und wirklich schlau bin ich aus dem Internet nicht geworden. Ich habe nur die Programmierkenntnisse, weil es mir Spaß gemacht hat.. Mehr aber auch nicht... :I

Kann mir jemand weiterhelfen, was ich tun muss, damit alles funktioniert? ^^"

Computer, App, IT, programmieren, IDE, Code, Programmiersprache, Softwareentwicklung, Webentwicklung, C (Programmiersprache), Entwicklungsumgebung

Arduino Uno Wifi Rev.2 verbindet sich nicht mit dem Internet?

Ich versuche meinen Arduino Uno Wifi Rev.2 mit dem WLAN zu verbinden. Der Code (Beispiel Code WiFi Nina ConnectWithWPA) lässt sich kompilieren und hochladen, keine Fehlermeldung. Alle "Werte" (Passwort, SSID) stimmen. Der Arduino hat die neuste Firmware. Wenn das Programm dann aber hochgeladen ist, entsteht eine Endlosschleife, in der der Arduino immer wieder "Attempting to connect to WPA SSID: XXXXXX" ausgibt, er sich aber nicht mit dem WLAN verbindet, da er sonst "You´re connected with the network" ausgeben würde.

Danke schonmal für eure Hilfe

Mein Code:
/*
 This example connects to an unencrypted WiFi network.
 Then it prints the MAC address of the WiFi module,
 the IP address obtained, and other network details.


 created 13 July 2010
 by dlf (Metodo2 srl)
 modified 31 May 2012
 by Tom Igoe
 */
#include <SPI.h>
#include <WiFiNINA.h>


#include "arduino_secrets.h" 
///////please enter your sensitive data in the Secret tab/arduino_secrets.h
char ssid[] = SECRET_SSID;        // your network SSID (name)
char pass[] = SECRET_PASS;    // your network password (use for WPA, or use as key for WEP)
int status = WL_IDLE_STATUS;     // the WiFi radio's status


void setup() {
  //Initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  // check for the WiFi module:
  if (WiFi.status() == WL_NO_MODULE) {
    Serial.println("Communication with WiFi module failed!");
    // don't continue
    while (true);
  }


  String fv = WiFi.firmwareVersion();
  if (fv < WIFI_FIRMWARE_LATEST_VERSION) {
    Serial.println("Please upgrade the firmware");
  }


  // attempt to connect to WiFi network:
  while (status != WL_CONNECTED) {
    Serial.print("Attempting to connect to WPA SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network:
    status = WiFi.begin(ssid, pass);


    // wait 10 seconds for connection:
    delay(10000);
  }


  // you're connected now, so print out the data:
  Serial.print("You're connected to the network");
  printCurrentNet();
  printWifiData();


}


void loop() {
  // check the network connection once every 10 seconds:
  delay(10000);
  printCurrentNet();
}


void printWifiData() {
  // print your board's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);
  Serial.println(ip);


  // print your MAC address:
  byte mac[6];
  WiFi.macAddress(mac);
  Serial.print("MAC address: ");
  printMacAddress(mac);
}


void printCurrentNet() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());


  // print the MAC address of the router you're attached to:
  byte bssid[6];
  WiFi.BSSID(bssid);
  Serial.print("BSSID: ");
  printMacAddress(bssid);


  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.println(rssi);


  // print the encryption type:
  byte encryption = WiFi.encryptionType();
  Serial.print("Encryption Type:");
  Serial.println(encryption, HEX);
  Serial.println();
}


void printMacAddress(byte mac[]) {
  for (int i = 5; i >= 0; i--) {
    if (mac[i] < 16) {
      Serial.print("0");
    }
    Serial.print(mac[i], HEX);
    if (i > 0) {
      Serial.print(":");
    }
  }
  Serial.println();
}
WLAN, Arduino, C (Programmiersprache)

ESP32 Code gut?

Hi, ich würde gerne fragen ob dieser code gut ist weil ich kenne mich nicht aus und da kommt immer dieser fehlercode:
'sendDiscordNotification' was not declared in this scope

#include <Arduino.h>
#include <WiFi.h>
#include <HTTPClient.h>


const char* ssid = "WLanSSID";
const char* password = "Password";


const char* webhook_url = "https://discord.com/api/webhooks/MyWebhook";



const int doorbellPin = 13;


bool doorbellState = LOW;


void setup() {
  Serial.begin(115200);
  

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Verbindung zum WLAN wird hergestellt...");
  }
  Serial.println("WLAN verbunden!");
  

  pinMode(doorbellPin, INPUT);
}


void loop() {
  doorbellState = digitalRead(doorbellPin);



  if (doorbellState == HIGH) {
    sendDiscordNotification();
    delay(5000);
  }


  delay(100);
}


void sendDiscordNotification() {
  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;


    http.begin(webhook_url);


    http.addHeader("Content-Type", "application/json");



    String payload = "{\"content\": \"Es hat geklingelt!\"}";


    int httpResponseCode = http.POST(payload);


    if (httpResponseCode > 0) {
      String response = http.getString();
      Serial.println(httpResponseCode);
      Serial.println(response);
    } else {
      Serial.print("Fehler bei der HTTP Anfrage: ");
      Serial.println(httpResponseCode);
    }



    http.end();
  } else {
    Serial.println("WiFi Verbindung verloren");
  }
}
Arduino, Code, Programmiersprache, C (Programmiersprache), Arduino IDE

WIE KANN ICH IN C DAS ◻️und das ◼️ auf der Console ausgeben?

Hab diesen Code geschrieben:

#include <stdio.h>
#include <stdlib.h>
#include "console.h"
#define SIZE 8 // Größe des Schachbretts
char *schachbrett[SIZE][SIZE];// 2D-Array für das Schachbrett
void initSpielfeld();
void ausgabeSpielfeld();
void spielBeenden();
int main() {
initSpielfeld();
initConsole();

        ausgabeSpielfeld();
        getch();
        clrscr();
        gotoxy(0,0);

}
void initSpielfeld(){
    // Fülle das Schachbrett mit den richtigen Symbolen
    for (int i = 0; i < SIZE; i++) { // Zeilen
        for (int j = 0; j < SIZE; j++) { // Spalten
            // Wenn die Summe der Indizes gerade ist, ist das Feld weiß
            if ((i + j) % 2 == 0) {
                schachbrett[i][j] = "◻"; // Weißes Quadrat
            } else {
                schachbrett[i][j] = "◼"; // Schwarzes Quadrat
            }
        }
    }
}
void ausgabeSpielfeld(){
    // Gebe das Schachbrett aus
    for (int i = 0; i < SIZE; i++) { // Zeilen
        for (int j = 0; j < SIZE; j++) { // Spalten
            printf("%s ", schachbrett[i][j]); // Quadrat ausgeben
        }
        printf("\n"); // Neue Zeile nach jeder Zeile im Schachbrett
    }
}

void spielBeenden(){
    return 0;
}

Bei mir kommt da aber immer das raus:

Ôù╗ Ôù╝ Ôù╗ Ôù╝ Ôù╗ Ôù╝ Ôù╗ Ôù╝

Ôù╝ Ôù╗ Ôù╝ Ôù╗ Ôù╝ Ôù╗ Ôù╝ Ôù╗

Ôù╗ Ôù╝ Ôù╗ Ôù╝ Ôù╗ Ôù╝ Ôù╗ Ôù╝

Ôù╝ Ôù╗ Ôù╝ Ôù╗ Ôù╝ Ôù╗ Ôù╝ Ôù╗

Ôù╗ Ôù╝ Ôù╗ Ôù╝ Ôù╗ Ôù╝ Ôù╗ Ôù╝

Ôù╝ Ôù╗ Ôù╝ Ôù╗ Ôù╝ Ôù╗ Ôù╝ Ôù╗

Ôù╗ Ôù╝ Ôù╗ Ôù╝ Ôù╗ Ôù╝ Ôù╗ Ôù╝

Ôù╝ Ôù╗ Ôù╝ Ôù╗ Ôù╝ Ôù╗ Ôù╝ Ôù╗

Aber das ist nicht mein ziel.

Ich möchte einfach nur ein schönes Schachbrett ausgeben.

Kann mir da jemand helfen?

ASCII, Programmiersprache, C (Programmiersprache), UTF-8

Meistgelesene Beiträge zum Thema C (Programmiersprache)