Arduino – die neusten Beiträge

Arduino und ESP8266 Fehler?

Hi, ich habe den Wifichip an den Arduino angeschlossen, wie hier:

Ich habe die Bibliotheken importiert und als Board auch bei Tools > Board > ESP8266 > Arduino gewählt. Wenn ich aber diesen Code hochlade :

#include <Adafruit_NeoPixel.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>


#define NUM_STRIPS 5
#define LED_PER_STRIP 60


const char* ssid = "#######";
const char* password = "########";


Adafruit_NeoPixel strips[NUM_STRIPS];
ESP8266WebServer server(80);


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


  // WLAN-Verbindung herstellen
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Verbindung zum WLAN herstellen...");
  }
  Serial.println("Verbunden mit WLAN");


  // Lichtstreifen initialisieren
  int stripPins[NUM_STRIPS] = {2, 3, 4, 5, 6}; // An Ihre Verkabelung anpassen



  for (int i = 0; i < NUM_STRIPS; i++) {
    strips[i] = Adafruit_NeoPixel(LED_PER_STRIP, stripPins[i]);
    strips[i].begin();
    strips[i].show();
  }


  // Webserver-Routen festlegen
  server.on("/", HTTP_GET, handleRoot);
  server.on("/led/on", HTTP_GET, handleLedOn);
  server.on("/led/off", HTTP_GET, handleLedOff);
  server.on("/led/color", HTTP_GET, handleLedColor);
  server.on("/led/brightness", HTTP_GET, handleLedBrightness);


  server.begin();
  Serial.println("Webserver gestartet");
}


void loop() {
  server.handleClient();
}


void handleRoot() {
  server.send(200, "text/html", "Willkommen bei der Lichtstreifen-Steuerung");
}


void handleLedOn() {
  int stripIndex = server.arg("strip").toInt();
  if (stripIndex >= 0 && stripIndex < NUM_STRIPS) {
    strips[stripIndex].fill(strips[stripIndex].Color(255, 255, 255));
    strips[stripIndex].show();
    server.send(200, "text/plain", "Lichtstreifen eingeschaltet");
  } else {
    server.send(400, "text/plain", "Ungültiger Streifenindex");
  }
}


void handleLedOff() {
  int stripIndex = server.arg("strip").toInt();
  if (stripIndex >= 0 && stripIndex < NUM_STRIPS) {
    strips[stripIndex].clear();
    strips[stripIndex].show();
    server.send(200, "text/plain", "Lichtstreifen ausgeschaltet");
  } else {
    server.send(400, "text/plain", "Ungültiger Streifenindex");
  }
}


void handleLedColor() {
  int stripIndex = server.arg("strip").toInt();
  int r = server.arg("R").toInt();
  int g = server.arg("G").toInt();
  int b = server.arg("B").toInt();


  if (stripIndex >= 0 && stripIndex < NUM_STRIPS) {
    strips[stripIndex].fill(strips[stripIndex].Color(r, g, b));
    strips[stripIndex].show();
    server.send(200, "text/plain", "Lichtfarbe aktualisiert");
  } else {
    server.send(400, "text/plain", "Ungültiger Streifenindex");
  }
}


void handleLedBrightness() {
  int stripIndex = server.arg("strip").toInt();
  int brightness = server.arg("brightness").toInt();


  if (stripIndex >= 0 && stripIndex < NUM_STRIPS) {
    strips[stripIndex].setBrightness(brightness);
    strips[stripIndex].show();
    server.send(200, "text/plain", "Helligkeit aktualisiert");
  } else {
    server.send(400, "text/plain", "Ungültiger Streifenindex");
  }
  }

Kommt immer diese Fehlermeldung:

. Variables and constants in RAM (global, static), used 29040 / 80192 bytes (36%)
║   SEGMENT  BYTES    DESCRIPTION
╠══ DATA     1504     initialized variables
╠══ RODATA   1320     constants       
╚══ BSS      26216    zeroed variables
. Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 60527 / 65536 bytes (92%)
║   SEGMENT  BYTES    DESCRIPTION
╠══ ICACHE   32768    reserved space for flash instruction cache
╚══ IRAM     27759    code in IRAM    
. Code in flash (default, ICACHE_FLASH_ATTR), used 271296 / 1048576 bytes (25%)
║   SEGMENT  BYTES    DESCRIPTION
╚══ IROM     271296   code in flash   
esptool.py v3.0
Serial port COM3
Connecting........_____....._____....._____....._____....._____....._____....._____


A fatal esptool.py error occurred: Failed to connect to ESP8266: Timed out waiting for packet header

Ich habe es auch schon versucht mit den Anschluss Flash in GND beim Arduino, hilf aber nicht

Weiß jemand was ich tun kann?

Vg Tmm

Bild zum Beitrag
Fehler, programmieren, Arduino, Script, Platine, ESP8266, Arduino IDE

Arduino Thermistor --- analog PIN zu Temperatur?

Hallo,

Ich arbeite momentan daran mit dem Arduino einen Thermometer zu bauen. Jedoch bekomme ich es nicht her, die richtigen Werte herauszubringen. Ich verwende einen Spannungsteiler. Auf der einen Seite ein Thermistor - ist verbunden mit A0 und 3.3V und dann ein 1000 Ohm Widerstand mit Verbindungen zu A0 und GND. Ich habe einen Arduino UNO R3 und ein MF52D3950 Thermistor. Was stimmt mit meinem Code nicht? Der Widerstand des Thermistors (im Code R2) sollte ca. 9200 Ohm betragen, ist aber immer zwischen 118 und 120. An was liegt das? Ich bin da schon 5 Stunden dran. Also BITTE helft mir.

Vielen Dank im Voraus!

LG

//www.elegoo.com
//2016.12.9
#include <math.h>
#include <LiquidCrystal.h>
//        BS E D4 D5 D6 D7
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
void setup() {
 Serial.begin(9600);
}
// This is OK
int analogPin= 0;
int raw= 0;
int Vin= 3.3; //volts input
float Vout= 0; // unknown voltage, we have to measure
float R2= 0; // Unknown resistance, we have to measure
float T1 = 26 + 273.15; //reference temperature
float R1 = 9040; //reference resistance
float T2 = 0; //searched temperature
float B = 3950; //B value resistor
float R_REF = 1000; //reference resistor Spannungsteiler Wert
void loop() {
 raw = analogRead(analogPin); //liest BIT-Wert für Spannung aus, welcher zum feststellen der Temperatur nötig ist
 Vout= (raw * 5)/(1024.0);
 R2 = R_REF / ((Vin / Vout) - 1);
 T2 = (B*T1*(-1))/(T1*log(R1/R2)-B)-273.15; //berechnet Temperatur
 
 Serial.print("raw:");
 Serial.println(raw);
 Serial.print("Vout:");
 Serial.println(Vout);
 Serial.print("R2:");
 Serial.println(R2);
 Serial.print("T2:");
 Serial.println(T2);
}
Elektrik, Spannung, Arduino, Elektrizität, LED, Physik, Schaltung, Widerstand, Arduino IDE

ESP8266 mit OLED Display?

Ich habe ein ESP8266 Developer Board, und möchte damit ein OLED-Display steuern (.94", 128x64px).

Ich finde nur Tutorials für Displays mit einem I2C-Protokoll, da hat das Display die Pins GND, VCC, SCL und SDA. Ich habe die Pins GND, VDD, SCK und SDA.

Laut meiner Recherche ist das ein SPI-Protokoll. Wenn ich dafür nach Tutorials suche, finde ich nur welche für Displays mit 6 Pins.

Mein Code (von einem I2C Tutorial) benutzt die Adafruit SDD1306 Library, keine Ahnung ob die nur mit I2C oder auch mit ISP funktioniert.

Wenn ich mit einem I2C Scanner die Screen Address suche, findet es das Display nicht.

Meine Schaltung:

OLED GND --> Chip GND

OLED VDD --> Chip 3V3

OLED SCK --> Digital IO 1

OLED SDA --> Digital IO 2

Kann ich einfach die ISP Adresse in den Code einfügen, und wenn ja wie finde ich diese? Oder brauch ich ganz anderen Code / Schaltung?

Code:

 #include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>


#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels


// Declaration for SSD1306 display connected using I2C
#define OLED_RESET     -1 // Reset pin
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);


void setup() {
  Serial.begin(9600);
  display.clearDisplay(); //Clear
  
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,28);
  display.println("Hello world!");
  display.display();
  delay(2000);
}


void loop() {
  delay(1000);
}

Display (Ich weiß dass die Schutzfolie noch drauf ist):

Bild zum Beitrag
Display, Technik, programmieren, Arduino, ISP, ESP8266

Elektrotechnische Schaltung von Roboter Greifer mit Arduino?

Hallo Zusammen!

Ich habe ein Problem und komme nicht so recht weiter. Ich muss dazu gestehen, dass mir Elektrotechnik nicht so gut liegt und ich mich aber gerade mittels zahlreicher Tutorials und Internetbeiträgen zu mehr Wissen hinarbeite.

Mein Problem:

Ich habe einen Cobot, welcher mit 24V Betriebsspannung arbeitet. Ich wollte für diesen Cobot nun einen Greifer entwickeln, dieser soll mittels eines Servos öffnen und schließen. Die Mechanik des Greifers ist 3D gedruckt und funktioniert soweit. Der Cobot hat einen 24V Versorgungsausgang. Diesen möchte ich gerne zur Steuerung meines Arduino nutzen. Zudem verfügt der Cobot über 7 Digital Inputs und 7 Digital Outputs, wovon ich gerne einen oder zwei Outputs nutzen möchte, um das Signal zum Schließen und Öffnen zu realisieren. Leider fehlt es mir einfach an grundlegendem Verständnis.

Ich habe mal grob eine kleine Zeichnung meines Schaltkreisverständnisses aufgezeichnet (siehe Anhang).

Mein Plan ist es, ein Step-Down-Modul zu verwenden, um die Spannung von 24V auf 5V für den Arduino zu reduzieren. Dann würde ich den Digitalen Output des Roboters mit einem Optokoppler oder einem Spannungsteiler (hier verstehe ich noch nicht, wie ich einen Spannungsteiler in ein digitales Output-Signal von 24V einbaue) verbinden und in den Eingang des Arduino geben. Die Ansteuerung des Servos würde ich dann vom Arduino aus steuern. Ein Problem dabei ist, dass, soweit ich das richtig verstanden habe, der Servo mit 6V arbeitet und mein Arduino nur 5V liefern kann. Zudem verstehe ich in der gesamten Schaltung nicht, wieso ich den Strom nicht begrenzen muss. Ich reduziere zwar die Spannung für den Arduino, aber wieso muss ich nicht auch den Strom reduzieren bzw. woher weiß ich überhaupt, wie viel Ampere der Cobot liefert? Ich glaube, hier verstehe ich trotz zahlreicher Videos nicht den Zusammenhang zwischen Spannung und Strom.

Ich wäre sehr dankbar, wenn mir jemand bei meinem Problem helfen könnte und mir erklären könnte, wie ich meine Schaltung richtig aufbaue, um meinen Greifer mit dem Arduino zu steuern und dabei die richtigen Spannungs- und Stromwerte zu berücksichtigen.

Vielen Dank im Voraus!

Bild zum Beitrag
Roboter, Elektrik, Spannung, Arduino, Elektrizität, Physik, Schaltung

Arduino Bildschirm kaputt?

Hallo ich habe einen Arduino Elegoo 2560, und wollte einen 2*16 LCD-Display nutzen. Jedoch ist mir aufgefallen, das er nichts anzeigt (siehe Bild). Ich hab schon alles versucht und weiß nicht wo das Problem liegt. Könnt ihr mir da weiterhelfen? Da es schlecht erkennbar ist, hab ich noch dazu geschrieben, welche Pins ich wie angeschlossen habe.

Code:

#include <LiquidCrystal.h> // Importiere die LiquidCrystal-Bibliothek

// Konfiguriere den Anschluss des LCD-Displays an den Arduino

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {

 // Initialisiere das LCD-Display mit der Anzahl der Zeilen und Spalten

 lcd.begin(16, 2);

 // Setze den Cursor in die linke obere Ecke des Displays

 lcd.setCursor(0, 0);

 // Gib den Text "Hello, World!" aus

 lcd.print("Hello, World!");

}

void loop() {

 // Setze den Cursor in die untere linke Ecke des Displays

 lcd.setCursor(0, 1);

 // Gib die Anzahl der Millisekunden seit dem Start des Sketches aus

 lcd.print(millis());

 // Warte für eine Sekunde, bevor die Schleife erneut ausgeführt wird

 delay(1000);

}

Pins:

  LCD Pin  | Function | Arduino Pin

----------------------------------------

    1   |   GND  |   GND

    2   |   +5V  |   +5V

    3   | V0 (Pot) | Potentiometer

    4   |   RS   | Digital Pin 12

    5   |   RW   |   GND

    6   |   E   | Digital Pin 11

    7   |   D0   |    -

    8   |   D1   |    -

    9   |   D2   |    -

   10   |   D3   |    -

   11   |   D4   |  Digital Pin 5

   12   |   D5   |  Digital Pin 4

   13   |   D6   |  Digital Pin 3

   14   |   D7   |  Digital Pin 2

   15   |   A   |   +5V

   16   |   K   |   GND

Bild zum Beitrag
PC, Elektrik, Arduino, LED, Physik

Meistgelesene Beiträge zum Thema Arduino