arduinouno

Arduino specifieke Software
Berichten: 4
Geregistreerd: 29 Jul 2015, 16:35

arduinouno

Berichtdoor geerthoste » 29 Jul 2015, 16:49

Ik heb het boek aangeschaft "Arduino Projecten voor gevorderden" van Dr. Günter Spanner.
Het project "een viercijferig display voor meetinstrumenten" werkt niet zoals zou moeten.

Op het 4-cijferig numeriek 7-segment-display zouden volgens het programma in het boek de cijfers "123 en 4" moeten verschijnen op het display.

Nu krijg ik "8888" op het display te zien.

Zelfde resultaat krijg ik te zien als ik het project "digitale klok met LED-display probeer.

Ik krijg bij het uploaden van het programma geen foutmeldingen.

Op blz. 17 in het boek volgende bemerking: "Helaas zijn bij de omschakeling op versie 1.0 veel veranderingen geïmplementeerd
die de compabiliteit met eerdere sketches en bibliotheken in sterke mate beperken"

Kan dit de oorzaak zijn van het niet werken van mijn projecten?
Zo ja, wat te doen?
Mijn arduinosoftware is ARDUINO 1.7.6

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: arduinouno

Berichtdoor nicoverduin » 29 Jul 2015, 17:44

Waar heb jij Arduino 1.7.6 vandaan? die ken ik niet....
Nu is het mooi dat jij dat boek hebt aangeschaft, maar die ken ik (men met mij anderen) dus ik heb geen idee wat voor schema je hebt gebruikt, welke code enz...
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 188
Geregistreerd: 23 Dec 2011, 00:12

Re: arduinouno

Berichtdoor Duality » 29 Jul 2015, 19:12

het klink als een hardware probleem, heb je alles goed aangesloten?
staan de sketches in het boek, heb je ze overgetypt ?
meschien het je wat typfouten gemaakt.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: arduinouno

Berichtdoor nicoverduin » 29 Jul 2015, 20:19

Duality schreef:het klink als een hardware probleem, heb je alles goed aangesloten?
vrijwel zeker en hardware probleem. Daarom moet hij die zaken publiceren waar wij iets mee kunnen.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: arduinouno

Berichtdoor shooter » 29 Jul 2015, 23:22

maak in fritzing een schema hoe het allemaal aangesloten is, een paar fotos en natuurlijk het programma alles in een zip en in het forum zetten.
paul deelen
shooter@home.nl

Berichten: 4
Geregistreerd: 29 Jul 2015, 16:35

Re: arduinouno

Berichtdoor geerthoste » 30 Jul 2015, 09:07

Dank voor de reacties.

Het programma ziet er als volgt uit.
Ik heb de hardware gecontroleerd en deze blijkt juist te zijn.

De schakeling werkt ook, in die zin dat ik enkel 8888 te zien krijg op het viercijferig 7-segment-display,
normaal zou ik 1234 moeten zien.

De aansluitingen zijn:

Arduino-pen: 0 1 2 3 4 5 6 7 A0 A1 A2 A3
Display-pen: 1 2 3 4 5 7 10 11 12 9 8 6
Segment: e d dp c g b f a D1 D2 D3 D4


// Listing 6-2
// Test 4x7 LED Display
#include <TimerOne.h>
#include "LedDisplay.h" // include our display driver

void setup() {
initLedDisplay();
}

void loop() {
numberOutput(1234);
}



// LedDisplay.h

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

// 7-segment codes
const int numbers[10][8] = {

// e, d, DP, c, g, b, f, a
{0, 0, 1, 0, 1, 0, 0, 0},
// 0
{1, 1, 1, 0, 1, 0, 1, 1},
// 1
{0, 0, 1, 1, 0, 0, 1, 0},
// 2
{1, 0, 1, 0, 0, 0, 1, 0},
// 3
{1, 1, 1, 0, 0, 0, 0, 1},
// 4
{1, 0, 1, 0, 0, 1, 0, 0},
// 5
{0, 0, 1, 0, 0, 1, 0, 0},
// 6
{1, 1, 1, 0, 1, 0, 1, 0},
// 7
{0, 0, 1, 0, 0, 0, 0, 0},
// 8
{1, 0, 1, 0, 0, 0, 0, 0}
// 9
};

// sla afzonderlijke cijfers op
volatile int D1, D2, D3, D4;

volatile uint8_t activeDigit = 0;

#define sbi(PORT, bit) (PORT |= (1 << bit))
// set bit in PORT
#define cbi(PORT, bit) (PORT &= ~(1 << bit))
// clear bit in PORT

// Schrijf cijfer naar het display op de aangegeven positie
void digit(int value, int pin) {
sbi(PORTC, pin);
// pin high => current digit on
PORTD = 0b11111111;

// activate one segment after another
for (int i = 0; i <= 7; i++) {
if (0 == numbers[value][i]) {
cbi(PORTD, (i)); // set segment
_delay_ms(1);
sbi(PORTD, (i)); // clear segment
}
}
}

// verdeel getal over de cijfers
void numberOutput (uint16_t number) {
D1 = number/1000; number %= 1000;
D2 = number/100; number %= 100;
D3 = number/10; number %= 10;
D4 = number;
}

void updateDisplay() {

PORTC = 0b00000000; // all digits off

if (0 == activeDigit) {
digit (D1, PORTC0);
}

if (1 == activeDigit) {
digit (D2, PORTC1);
}

if (2 == activeDigit) {
digit (D3, PORTC2);
}

if (3 == activeDigit) {
digit (D4, PORTC3);
}

activeDigit++;
if (4 == activeDigit) {
activeDigit = 0;
}
}

void initLedDisplay() {
DDRD = 0b11111111;
DDRC = 0b00001111; // Interrupt every 1000 us = 1 ms

Timer1.initialize(1000);
Timer1.attachInterrupt(updateDisplay);
}

Berichten: 4
Geregistreerd: 29 Jul 2015, 16:35

Re: arduinouno

Berichtdoor geerthoste » 30 Jul 2015, 09:30

Hallo, nog dit.

Mijn arduino IDE is volgende versie.

http://www.arduino.org/blog/1-the-new-b ... -ide-1-7-6

New Arduino IDE 1.7.6

New Arduino IDE 1.7.6
A new version of the Arduino IDE is available, with some bug fixes.
Major corrections were made to the libraries of the M0 and M0 Pro.
In particular, the problems with the Serial and Ethernet2 libraries.

Dank voor de reacties.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: arduinouno

Berichtdoor nicoverduin » 30 Jul 2015, 10:46

Eerst ff leesbaarder maken:
cpp code
// Listing 6-2
// Test 4x7 LED Display
#include <TimerOne.h>
#include "LedDisplay.h" // include our display driver

void setup() {
initLedDisplay();
}

void loop() {
numberOutput(1234);
}

// LedDisplay.h

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

// 7-segment codes
const int numbers[10][8] = {

// e, d, DP, c, g, b, f, a
{ 0, 0, 1, 0, 1, 0, 0, 0 },
// 0
{ 1, 1, 1, 0, 1, 0, 1, 1 },
// 1
{ 0, 0, 1, 1, 0, 0, 1, 0 },
// 2
{ 1, 0, 1, 0, 0, 0, 1, 0 },
// 3
{ 1, 1, 1, 0, 0, 0, 0, 1 },
// 4
{ 1, 0, 1, 0, 0, 1, 0, 0 },
// 5
{ 0, 0, 1, 0, 0, 1, 0, 0 },
// 6
{ 1, 1, 1, 0, 1, 0, 1, 0 },
// 7
{ 0, 0, 1, 0, 0, 0, 0, 0 },
// 8
{ 1, 0, 1, 0, 0, 0, 0, 0 }
// 9
};

// sla afzonderlijke cijfers op
volatile int D1, D2, D3, D4;

volatile uint8_t activeDigit = 0;

#define sbi(PORT, bit) (PORT |= (1 << bit))
// set bit in PORT
#define cbi(PORT, bit) (PORT &= ~(1 << bit))
// clear bit in PORT

// Schrijf cijfer naar het display op de aangegeven positie
void digit(int value, int pin) {
sbi(PORTC, pin);
// pin high => current digit on
PORTD = 0b11111111;

// activate one segment after another
for (int i = 0; i <= 7; i++) {
if (0 == numbers[value][i]) {
cbi(PORTD, (i)); // set segment
_delay_ms(1);
sbi(PORTD, (i)); // clear segment
}
}
}

// verdeel getal over de cijfers
void numberOutput(uint16_t number) {
D1 = number / 1000;
number %= 1000;
D2 = number / 100;
number %= 100;
D3 = number / 10;
number %= 10;
D4 = number;
}

void updateDisplay() {

PORTC = 0b00000000; // all digits off

if (0 == activeDigit) {
digit(D1, PORTC0);
}

if (1 == activeDigit) {
digit(D2, PORTC1);
}

if (2 == activeDigit) {
digit(D3, PORTC2);
}

if (3 == activeDigit) {
digit(D4, PORTC3);
}

activeDigit++;
if (4 == activeDigit) {
activeDigit = 0;
}
}

void initLedDisplay() {
DDRD = 0b11111111;
DDRC = 0b00001111; // Interrupt every 1000 us = 1 ms

Timer1.initialize(1000);
Timer1.attachInterrupt(updateDisplay);
}


Die IDE versie die je hebt is het gevolg van een strijd vorig jaar ontstaan tussen de ontwikkelaars van Arduino en de hardware bouwer van Arduino. Je zal hier denk ik weinig support vinden omdat de meesten hier werken met de IDE's van Arduino.cc. De oorspronkelijke.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: arduinouno

Berichtdoor nicoverduin » 30 Jul 2015, 10:59

Moet dit statement :
cpp code
PORTD = 0b11111111;


niet

cpp code
PORTD = 0b00000000;


zijn?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4
Geregistreerd: 29 Jul 2015, 16:35

Re: arduinouno

Berichtdoor geerthoste » 30 Jul 2015, 11:44

Dank je wel mannen.

Door je tip heb ik de oplossing gevonden.
Ik kan me wel voor het hoofd stoten dat ik deze fout niet eerder gezien heb.

Ik heb het verkeerde display geschakeld.

Programma is geschreven voor een CA display en ik had er een CC display geschakeld.

Dank voor de tips.

Nu werkt de schakeling zoals het hoort.

Volgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 98 gasten