arduinouno
18 berichten
• Pagina 1 van 2 • 1, 2
- geerthoste
- Berichten: 4
- Geregistreerd: 29 Jul 2015, 16:35
arduinouno
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
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
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: arduinouno
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...
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...
Re: arduinouno
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.
staan de sketches in het boek, heb je ze overgetypt ?
meschien het je wat typfouten gemaakt.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: arduinouno
vrijwel zeker en hardware probleem. Daarom moet hij die zaken publiceren waar wij iets mee kunnen.Duality schreef:het klink als een hardware probleem, heb je alles goed aangesloten?
Re: arduinouno
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
shooter@home.nl
- geerthoste
- Berichten: 4
- Geregistreerd: 29 Jul 2015, 16:35
Re: arduinouno
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);
}
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);
}
- geerthoste
- Berichten: 4
- Geregistreerd: 29 Jul 2015, 16:35
Re: arduinouno
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.
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.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: arduinouno
Eerst ff leesbaarder maken:
cpp code
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.
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.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: arduinouno
Moet dit statement :
cpp code
niet
cpp code
zijn?
cpp code
PORTD = 0b11111111;
niet
cpp code
PORTD = 0b00000000;
zijn?
- geerthoste
- Berichten: 4
- Geregistreerd: 29 Jul 2015, 16:35
Re: arduinouno
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.
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.
18 berichten
• Pagina 1 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 98 gasten