overschakelen van Arduino Uno naar Arduino Mega

Arduino specifieke Software
Berichten: 13
Geregistreerd: 08 Apr 2017, 18:49

overschakelen van Arduino Uno naar Arduino Mega

Berichtdoor sebastiaan_maes » 10 Mei 2017, 21:07

Hallo, ik ben momenteel an het werk aan een led-cube. Toen ik aan het project begon heb ik mij een arduino Uno R3 gekocht, de code werkt precies zoals het zou moeten. Ik Heb ondertussen een heel deel animaties geschreven, het geheugen van de arduino uno is nu te klein voor alle animaties, daarom heb ik mij vandaag een arduino Mega 2560 gekocht. Echter toen ik de code uploadde deed de cubus niks. Ik heb gelezen dat er kleine verschillen zitten in beide modellen, ik kom er alleen niet aan uit wat ik nu precies moet veranderen. Kan iemand mij helpen? Alvast bedankt

PS: de code van mijn arduino "https://pastebin.com/VUeVNgmE"

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: overschakelen van Arduino Uno naar Arduino Mega

Berichtdoor Koepel » 11 Mei 2017, 00:24

Die code heb ik gecompileerd voor een Arduino Uno: 39% flash gebruik, 19% sram gebruik. Dat is dus nog lang niet vol :?
Is die 39% een probleem ?

Je kunt deze twee afdrukken en de verschillen vergelijken:
http://www.pighixxx.com/test/portfolio-items/uno/
http://www.pighixxx.com/test/portfolio-items/mega/

De SPI bus zit op een andere plaats.
De PORTD wordt gebruikt om de SR_LATCH en SR_BLANK te bedienen, maar die zitten ook op een andere poort. Bij de Mega is pin 2 en 3 PORTE 4 en 5.
Ik weet niet of Timer2 hetzelfde werkt bij de Arduino Uno en Arduino Mega.

Berichten: 13
Geregistreerd: 08 Apr 2017, 18:49

Re: overschakelen van Arduino Uno naar Arduino Mega

Berichtdoor sebastiaan_maes » 11 Mei 2017, 12:35

Dit waren maar een deel van de animaties, wanneer ik deze toevoeg is het geheugen wel degelijk te klein. Is er een website waar ik kan zien wat de verschillen in programmeren zijn en wat ik dan zou moeten veranderen? Bedankt voor de snelle reactie!

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: overschakelen van Arduino Uno naar Arduino Mega

Berichtdoor Koepel » 11 Mei 2017, 14:11

Het schijnt dat Timer2 zo ongeveer hetzelfde doet, dus misschien dat die interrupt gewoon werkt.

De SPI bus zit op de 6 pinnen van de ICSP header. Anders zul je de SPI pinnen moeten gebruiken op de normale headers van het Arduino Mega board. Zie daarvoor de plaatjes waarvan ik een link gaf. Daar zie je dat de SCK op 51 zit en de MOSI op 52

Probeer dit eens:
Code: Alles selecteren
#define SPI_SCK   SCK
#define SPI_MOSI  MOSI
Dan is dat tenminste hetzelfde voor de Uno en de Mega.

Zoek vervolgens alle "PORTD" in de sketch. Die kun je wijzigen naar "PORTE" met andere getallen voor SR_LATCH en SR_BLANK. Maar de Arduino Mega heeft ook een "PORTD", dus als je dat niet verandert en ook nog dezelfde waarden houdt voor SR_LATCH en SR_BLANK dan kom je bij pin 18 (latch) en 19 (blank) uit.

De verschillen vind je in de datasheets. Ik weet geen handleiding om van de Uno naar de Mega over te stappen. Die zou ook heel uitgebreid worden, omdat veel hetzelfde is, maar ook veel niet.

Zou ik de (te) grote sketch mogen zien ? Zou het mogelijk zijn, om bijvoorbeeld een tabel of een bestand van een SD kaartje te lezen en dat uit te voeren ?

Berichten: 13
Geregistreerd: 08 Apr 2017, 18:49

Re: overschakelen van Arduino Uno naar Arduino Mega

Berichtdoor sebastiaan_maes » 11 Mei 2017, 19:02

hier is de volledige code: "https://pastebin.com/Fet1j4Nj"
er is nog een stukje code, dit om de cubus op muziek te laten werken "https://pastebin.com/y6P806BE"
Deze twee codes ben ik van plan samen te voegen, zodat ik kan schakelen tussen de twee via drukknoppen.

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: overschakelen van Arduino Uno naar Arduino Mega

Berichtdoor Koepel » 11 Mei 2017, 19:34

Begrijp je mijn opmerkingen om de code om te bouwen ?

Het is nauwelijks mogelijk om alles in tabellen te zetten.
Er zijn wel een paar kleine optimalisaties mogelijk, maar dat zet geen zoden aan de dijk.

Bijvoorbeeld dit:
Code: Alles selecteren
  for (int i = 0; i < 8; i++)
  {
    setPixel(7, 0, i, 0, 1, 1);
    setPixel(6, 1, i, 0, 1, 1);
    setPixel(5, 2, i, 0, 1, 1);
    setPixel(4, 3, i, 0, 1, 1);
    setPixel(3, 4, i, 0, 1, 1);
    setPixel(2, 5, i, 0, 1, 1);
    setPixel(1, 6, i, 0, 1, 1);
    setPixel(0, 7, i, 0, 1, 1);
  }


Kan ook zo:
Code: Alles selecteren
  for (int i = 0; i < 8; i++)
  {
    for( int j = 0; j < 8; j++)
    {
      setPixel( 7-j, j, i, 0, 1, 1);
    }
  }


Ook zie ik herhalingen die ook in een for-loop kunnen. Dus ik ben er vrij zeker van dat het zou kunnen passen in een Uno. Wil je de sketch met geluid er bij, dan heb je natuurlijk toch een Arduino Mega nodig.

Berichten: 13
Geregistreerd: 08 Apr 2017, 18:49

Re: overschakelen van Arduino Uno naar Arduino Mega

Berichtdoor sebastiaan_maes » 11 Mei 2017, 20:07

ja, de arduino code is niet altijd even optimaal geschreven. 'T zit hem vooral erin dat ik graag nog nieuwe animaties wil bijprogrammeren inc. de muziekcode. Het probleem is nu denk ik dat het veel werk kost deze software te herschrijven, zonder echt wetende wat ik moet herschrijven (zoals de pinnen, dit had ik geprobeerd maar blijkt niet te werken), een arduino Uno zijn geheugen uitbreiden gaat ook niet. Ik zit denk ik met dit project een beetje "vast" en beperkt aan de mogelijkheden als ik het zo hoor

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: overschakelen van Arduino Uno naar Arduino Mega

Berichtdoor Koepel » 12 Mei 2017, 00:18

Uhm... ik weet niet beter dan dat ik voor je hebt uitgezocht wat de verschillen zijn voor jouw sketch en voor je heb beschreven hoe het om te zetten is en voor de zekerheid nog gevraagd hebt of je mijn opmerkingen begreep.

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 19 gasten