INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Sketch von Uno auf Mega portieren
12.08.2020, 19:48
Beitrag #1
Sketch von Uno auf Mega portieren
Hi @ all,

als Arduino-Neuling versuche ich mich am Bau eines Kamerasliders. Dazu brauche ich zuerst mal ein Menü für die Parametrierung. Deshalb habe ich mit dem Nokia 5110 Display und dem Drehencoder angefangen. Ich bin da auch auf einem guten Weg, jedenfalls auf dem UNO. Hier funktioniert alles wie gewünscht. Mein Projekt braucht aber etwas mehr, weshalb ich den Sketch auf einen original Mega 2560 geladen habe. Hier funktioniert aber zumindest das Display nicht. Ich vermute, dass der Mega für einen oder mehrere benutzte Ports eine separate Deklarierung braucht, oder ich am Mega andere Ports verwenden muss. Könnt ihr mir hier vielleicht ein Tipp geben?


.ino  Kameraslider.ino (Größe: 6,67 KB / Downloads: 47)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.08.2020, 20:29
Beitrag #2
RE: Sketch von Uno auf Mega portieren
Sieh dir mal das Pinout des Mega an, da liegen die Pins des SPI anders als beim UNO.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.08.2020, 21:19
Beitrag #3
RE: Sketch von Uno auf Mega portieren
(12.08.2020 20:29)hotsystems schrieb:  Sieh dir mal das Pinout des Mega an, da liegen die Pins des SPI anders als beim UNO.

Danke. Das hilft mir einen Schritt weiter. Auf die Schnelle habe ich aber noch nicht herausgefunden, wie ich die Abweichung vom Standard der Library übergebe. Möglicherweise sollte ich diese mal updaten.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.08.2020, 21:22
Beitrag #4
RE: Sketch von Uno auf Mega portieren
(12.08.2020 21:19)Clixmaster schrieb:  Danke. Das hilft mir einen Schritt weiter. Auf die Schnelle habe ich aber noch nicht herausgefunden, wie ich die Abweichung vom Standard der Library übergebe. Möglicherweise sollte ich diese mal updaten.

Wenn es keine Parameterübergabe beim initialisieren gibt, dann musst du das in der Library (die kenne ich nicht) anpassen.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.08.2020, 21:48 (Dieser Beitrag wurde zuletzt bearbeitet: 12.08.2020 21:48 von hotsystems.)
Beitrag #5
RE: Sketch von Uno auf Mega portieren
Hallo Clixmaster,

ich konnte mir jetzt erst deinen Sketch ansehen, auf dem Tablet geht das nicht.
Sorry für die Verwechselung.

Da habe ich gesehen, dass die Pins für das Display komplett definiert sind.
Diese sollten eigentlich identisch zum Mega sein.

Daher kann ich mir nicht erklären, warum es auf dem Mega nicht funktioniert.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.08.2020, 22:07
Beitrag #6
RE: Sketch von Uno auf Mega portieren
(12.08.2020 19:48)Clixmaster schrieb:  als Arduino-Neuling versuche ich mich am Bau eines Kamerasliders.
Warum hängst Du den Code nicht direkt in Codetags in den Beitrag?

Wie das geht, steht hier.
Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.08.2020, 15:18
Beitrag #7
RE: Sketch von Uno auf Mega portieren
Das Update der Bibliotheken hat leider keinen Erfolg gebracht. Tatsächlich nutzt man für Hardware SPI beim UNO 11/13 und beim Mega 51/52. Ich habe versucht, die beiden Ports an die Bibliothek zu übergeben:
Code:
Adafruit_PCD8544 display = Adafruit_PCD8544( 52, 51, 5, 4, 3);
Jedoch auch ohne Erfolg. Das ist die Variante, die für den Software SPI verwendet wird. So habe ich mit:
Code:
Adafruit_PCD8544 display = Adafruit_PCD8544( 9, 8, 5, 4, 3);
einen funktionierenden Sketch. Wäre also eine Lösung. Da ich aber noch nicht weiß, wie zeitkritisch der Sketch mal wird, hätte ich gerne den Hardware SPI genutzt. Hier mal der doch übersichtliche Code der Library:
Code:
/**************************************************************************/
/*!
  @file Adafruit_PCD8544.h
  This is a library for our Monochrome Nokia 5110 LCD Displays
  Pick one up today in the adafruit shop!
  ------> http://www.adafruit.com/products/338
  These displays use SPI to communicate, 4 or 5 pins are required to
  interface
  Adafruit invests time and resources providing this open source code,
  please support Adafruit and open-source hardware by purchasing
  products from Adafruit!
  Written by Limor Fried/Ladyada  for Adafruit Industries.
  BSD license, check license.txt for more information
  All text above, and the splash screen must be included in any redistribution
*/
/**************************************************************************/
#ifndef _ADAFRUIT_PCD8544_H
#define _ADAFRUIT_PCD8544_H

#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#include "pins_arduino.h"
#endif

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

#if defined(__SAM3X8E__) || defined(ARDUINO_ARCH_SAMD)
typedef volatile RwReg PortReg; ///< PortReg for SAMD
typedef uint32_t PortMask;      ///< PortMask for SAMD
#elif defined(__AVR__)
typedef volatile uint8_t PortReg; ///< PortReg for AVR
typedef uint8_t PortMask;         ///< PortMask for AVR
#else
typedef volatile uint32_t PortReg; ///< PortReg for other chips
typedef uint32_t PortMask;         ///< PortMask for other chips
#endif

#define BLACK 1 ///< Black pixel
#define WHITE 0 ///< White pixel

#define LCDWIDTH 84  ///< LCD is 84 pixels wide
#define LCDHEIGHT 48 ///< 48 pixels high

#define PCD8544_POWERDOWN 0x04 ///< Function set, Power down mode
#define PCD8544_ENTRYMODE 0x02 ///< Function set, Entry mode
#define PCD8544_EXTENDEDINSTRUCTION                                            \
  0x01 ///< Function set, Extended instruction set control

#define PCD8544_DISPLAYBLANK 0x0    ///< Display control, blank
#define PCD8544_DISPLAYNORMAL 0x4   ///< Display control, normal mode
#define PCD8544_DISPLAYALLON 0x1    ///< Display control, all segments on
#define PCD8544_DISPLAYINVERTED 0x5 ///< Display control, inverse mode

#define PCD8544_FUNCTIONSET 0x20 ///< Basic instruction set
#define PCD8544_DISPLAYCONTROL                                                 \
  0x08 ///< Basic instruction set - Set display configuration
#define PCD8544_SETYADDR                                                       \
  0x40 ///< Basic instruction set - Set Y address of RAM, 0 <= Y <= 5
#define PCD8544_SETXADDR                                                       \
  0x80 ///< Basic instruction set - Set X address of RAM, 0 <= X <= 83

#define PCD8544_SETTEMP                                                        \
  0x04 ///< Extended instruction set - Set temperature coefficient
#define PCD8544_SETBIAS 0x10 ///< Extended instruction set - Set bias system
#define PCD8544_SETVOP                                                         \
  0x80 ///< Extended instruction set - Write Vop to register

#define PCD8544_SPI_CLOCK_DIV                                                  \
  SPI_CLOCK_DIV4 ///< Default to max SPI clock speed for PCD8544 of 4 mhz (16mhz
                 ///< / 4) for normal Arduinos. This can be modified to change
                 ///< the clock speed if necessary (like for supporting other
                 ///< hardware).

/**************************************************************************/
/*!
    @brief The PCD8544 LCD class
*/
class Adafruit_PCD8544 : public Adafruit_GFX {
public:
  Adafruit_PCD8544(int8_t SCLK, int8_t DIN, int8_t DC, int8_t CS, int8_t RST);
  Adafruit_PCD8544(int8_t SCLK, int8_t DIN, int8_t DC, int8_t RST);
  Adafruit_PCD8544(int8_t DC, int8_t CS, int8_t RST);

  void begin(uint8_t contrast = 40, uint8_t bias = 0x04);

  void command(uint8_t c);
  void data(uint8_t c);

  void setContrast(uint8_t val);
  void setBias(uint8_t val);
  uint8_t getContrast(void);
  uint8_t getBias(void);
  void clearDisplay(void);
  void display();
  void setReinitInterval(uint8_t val);
  uint8_t getReinitInterval(void);

  void drawPixel(int16_t x, int16_t y, uint16_t color);
  uint8_t getPixel(int8_t x, int8_t y);

  void initDisplay();

private:
  int8_t _din;              ///< DIN pin
  int8_t _sclk;             ///< SCLK pin
  int8_t _dc;               ///< DC pin
  int8_t _rst;              ///< RST pin
  int8_t _cs;               ///< CS pin
  uint8_t _contrast;        ///< Contrast level, Vop
  uint8_t _bias;            ///< Bias value
  uint8_t _reinit_interval; ///< Reinitialize the display after this many calls
                            ///< to display()
  uint8_t _display_count;   ///< Count for reinit interval
  volatile PortReg *mosiport; ///< MOSI port
  volatile PortReg *clkport;  ///< CLK port
  PortMask mosipinmask;       ///< MOSI port mask
  PortMask clkpinmask;        ///< CLK port mask

  void spiWrite(uint8_t c);
  bool isHardwareSPI();
};

#endif

@Tommy
Bin auch im Forum Neuling. Lesson learned.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.08.2020, 21:51
Beitrag #8
RE: Sketch von Uno auf Mega portieren
Wenn die Version mit Software-SPI funktioniert, warum startest du nicht erstmal damit ?
Oder du wechselst auf ein Display, welches auch sicher am SPI (Hardware) funktioniert. Bzw. du wechselst auf I2C, das wird sicher auch funktionieren.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino Mega 2560 Hai47 2 223 08.01.2021 18:29
Letzter Beitrag: AnjinSan
  RFID 125kHz am MEGA 2560 Alexander307 16 521 29.12.2020 22:19
Letzter Beitrag: hotsystems
  MEGA 2560 und DI_output 21,0,1 Christian_Moba-Arduino 4 261 24.12.2020 15:23
Letzter Beitrag: hotsystems
  Mega 2560 mit HC-05 Probleme crusico 12 641 04.12.2020 07:53
Letzter Beitrag: crusico
  Problem Arduino Mega und Nextion Touch Display pds14 9 796 28.10.2020 11:20
Letzter Beitrag: hotsystems
  Sketch auf anderem Rechner Telefonmann 2 382 21.09.2020 17:23
Letzter Beitrag: hotsystems
  Werte im Sketch in Variablen speichern Bitklopfer 4 692 06.09.2020 10:25
Letzter Beitrag: Bitklopfer
Wink Arduino TFT Display MEGA 2560 Samsuino 48 17.015 23.07.2020 15:45
Letzter Beitrag: sam_217
  Fehlermeldung beim Sketch hochladen heino_m 12 1.923 28.05.2020 18:25
Letzter Beitrag: Tommy56
  Mega 2560 R3 und Pro USB CH340G Wusl 1 646 26.05.2020 14:52
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste