Hallo,
ich bin absolut blutiger Anfänger mit Arduino und die ist mein erster Beitrag hier im Forum.
Deshalb mal ein zusätzliches Hallo an alle die hier aktiv sind.
Für den Fall, dass ich evtl. nicht die richtige Kategorie getroffen habe oder aus Versehen ins Fettnäfpchen getreten bin, bitte ich schon mal vorsorglich um Entschuldigung und hoffe auf eine kleine Hilfe zu folgendem Problem:
Für mein erstes Projekt "Stroboskop / Drehzahlmesser" habe ich bei Youtube eine recht brauchbare Vorlage gefunden, was ich aber auf meinen Zweck noch stark anpassen muss.
Das Projekt nennt sich "Stroposkop_LED_Drehzahlmesser".
Verwendet wird eine Librarie pwm Copyright (c) 2012 Sam Knight.
Das Ganze funktioniert mit einem Arduino Uno bisher sehr gut und völlig problemlos, wenn gleich noch etwas verbesserungsbedürftig.
Dummerweise kann ich das Projekt aber nicht auf den später zum Einsatz vorgesehenen Arduino Nano Eve verwenden.
Es wäre wirklich nett, wenn mir dabei jemand helfen könnte.
VG Jürgen
C:\Users\JRGEN~1\AppData\Local\Temp\ccs9B6MW.ltrans0.ltrans.o: In function `SetPinFrequency()':
C:\Users\Jürgen\Documents\Arduino\Stroposkop_LED_Drehzahlmesser/Stroposkop_LED_Drehzahlmesser.ino:60: undefined reference to `SetPinFrequencySafe(signed char, unsigned long)'
C:\Users\Jürgen\Documents\Arduino\Stroposkop_LED_Drehzahlmesser/Stroposkop_LED_Drehzahlmesser.ino:61: undefined reference to `SetPinFrequencySafe(signed char, unsigned long)'
C:\Users\JRGEN~1\AppData\Local\Temp\ccs9B6MW.ltrans0.ltrans.o: In function `setup':
C:\Users\Jürgen\Documents\Arduino\Stroposkop_LED_Drehzahlmesser/Stroposkop_LED_Drehzahlmesser.ino:16: undefined reference to `InitTimersSafe()'
C:\Users\Jürgen\Documents\Arduino\Stroposkop_LED_Drehzahlmesser/Stroposkop_LED_Drehzahlmesser.ino:19: undefined reference to `pwmWrite(unsigned char, unsigned char)'
C:\Users\Jürgen\Documents\Arduino\Stroposkop_LED_Drehzahlmesser/Stroposkop_LED_Drehzahlmesser.ino:20: undefined reference to `pwmWrite(unsigned char, unsigned char)'
collect2.exe: error: ld returned 1 exit status
exit status 1
Compilation error: exit status 1
Nur mit der Fehlermeldung kann man nicht sehr viel Anfangen. Es klingt danach, als wären Libs nicht richtig installiert oder nicht für Deinen geplanten Arduino geeignet.
Gib uns bitte die Links zu den Libs und Deinen Sketch (in Codetags - wie das geht, steht hier)
Da hängt das Projekt in der Beschreibung als zip inklusive lib an.
Ich vermute eben auch, das der Nano für die Lib nicht geht.
Dann benötige ich aber etwas Anderes, was am Ende das gleiche macht.
Ich sage es nur nochmal, mit dem Uno funktioniert das bestens.
Dann nehme ich den gleichen Sketch, das gleiche Projekt, stelle nur den verwendeten Port um und es kommt der Linker Fehler.
Im Grunde ist die Aufgabenstellung ja simpel:
Zwei Leds sollen mit einstellbarer Frequenz blinken.
Die Einschaltdauer soll dabei möglichst kurz sein.
Ich möchte damit reparierte Motoren mit interner Drehzahlregelung auf Gleichlauf prüfen.
Könntest Du auch die Fragen beantworten?
Der Nano Every hat nichts mit dem Nano zu tun. Das ist ein völlig anderer Prozessor. Wenn es mit dem UNO funktioniert, könntest Du bei dem bleiben oder einen Nano mit 328P benutzen.
Ich kann diese Frage nicht beantworten, weil ich sie nicht verstehe.
Aber wenn Du mir erklärst wie ich dieses Paket installieren muss tue ich das gern noch fix.
Und ja, du hast Recht, ich war eine wenig unpräzise.
Ich habe einen Uno mit dem es funktioniert und eine Nano Eve mit dem es nicht funktioniert.
Ich wäre auch bereit noch einen Nano zu beschaffen, wenn das eine Lösung ist. Kostet ja nicht viel.
Für den Every müsstest Du den Core installieren. Wie das geht steht hier. Dass es dann immer noch nicht geht, ist nicht auszuschließen.
Mit einem "normalen" Nano mit 328 (wie beim UNO) geht es, also nimm lieber diesen.
Hallo @my_xy_projekt
so groß ist das Problem ja nicht.
Vor allem nicht, wenn es durch den Kauf eines Nano zu erledigen ist.
Aber die Anpassung der lib wäre auch interessant.
Das übersteigt allerdings meinen derzeitigen Horizont.
Interessant wäre es aus noch einem anderen Grund.
Ich kann das derzeitige Programm für meine Prüfung der Drehzahl schon verwenden.
Es hat aber einen Nachteil, der auch mit einer Änderung der Lib sicher zu beheben wäre.
Ich kann die Frequenz derzeit nur in 1 Herz Schritten ändern.
Viel besser wären 0,1 Herz
Beim Umbau der lib bräuchte ich aber definitiv Hilfe.
@Tommy56
Ich denke, es ist installiert.
Das Blinkbeispiel konnte ich ja ohne Weiteres kompilieren.
Dochdoch.
Dreist wenn Du auf einen anderen Controller umsteigst, ist Deine Anforderung ja dann noch die Änderung der Auflösung.
Aber vielleicht ist es mit einem anderen Controller dann nicht ganz so schwer.
Den einizigen, den ich kenne der den every schon mehrfach in der Mache hatte, wäre @Doc_Arduino - und das umschreiben bzw. hinzufügen entsprechender Routinen benötigt schon etwas an Wissen udn ist nicht mal so nebenher gemacht.
Einen ersten Eindruck bekommst Du, wenn Du in seinem Profil auf seinen Link Nano Every Basics klickst.
Ok, dann ist der Core da.
Es gab hier mal eine Thread von @Doc_Arduino zum 4809, den ich hier gehostet habe. Evtl. hilft Dir das weiter. Einiges an Einarbeitung wirst Du aber da rein stecken müssen.
Ich habe keinen Nano Every, kann Dir da also nicht mehr weiter helfen.
Ich lese du möchtest irgendeine Frequenz haben und den Duty Cycle einstellen.
Von welcher Frequenz oder Frequenzbereich reden wir?
Von welchen Duty Bereich reden wir?
Vielleicht ist im Link schon etwas dabei.
Die Verwendung vom MegaCoreX Core empfehle ich jedem Every Nutzer. MCUdude war so schlau und hat den Timer TCA freigeschaufelt. Wird nicht mehr von millis() & Co belegt. Könnte wichtig werden.
Das als Ino-File beigefügte Beispiel ist ziemlich umfangreich, allerdings gibt es auf der Startseite bei GitHub folgenden Code, der kurz und bündig ist:
#ifdef ARDUINO_ARCH_MEGAAVR
#include "EveryTimerB.h"
#define Timer1 TimerB2 // use TimerB2 as a drop in replacement for Timer1
#else // assume architecture supported by TimerOne ....
#include "TimerOne.h"
#endif
// code below will now work both on the MegaAVR and AVR processors
void setup() {
Timer1.initialize();
Timer1.attachInterrupt(myisr);
Timer1.setPeriod(1000000); // like the TimerOne library this will start the timer as well
}
void myisr() {
// do something useful every second
}
Passende Periodendauer in Mikrosekunden einstellen
In der ISR Zähler für Ein/Aus einbringen
LEDs bei Erreichen der jeweiligen Zählerstande schalten
digitalWrite sollte ggf. durch direkte Portmanipulation ersetzt werden, um die ISR nicht zu lange zu beanspruchen.
Danke für die vielen Beiträge.
Ich muss das nachher erst mal alles lesen, bin noch unterwegs.
Da sprichst Du etwas wichtiges an.
Die lib kann ja bis in den kHz Bereich.
Das brauche ich nicht.
Ich brauche so von 30 bis 50 Hz praktisch.
Von 1 bis 100 wäre mehr als ausreichend.
Das schafft natürlich Platz im Wertebereich.
Die lib wird ja mit einem int gefüttert.
Wenn also das ganze einen 10er Teiler bekommen würde, wäre das völlig ausreichend.
Dann wäre eben der Wert in "herz" nicht 1 Herz sondern 0,1 Herz und 330 33 Herz.
Das wäre völlig ausreichend.
also 30 ... 50Hz, optimal 1 ... 100Hz.
Auflösung 0,1Hz.
Signalform symmetrisches 50% Rechtecksignal?
Lies dich mal ein. Meine Timer Libs sind keine Universal Libs. Sie dienen nur zum einfacheren Konfigurieren der Timer laut Manual. Wobei man das hier, wenn es einfach gehalten bleibt auch direkt schreiben kann. Wird man sehen. Morgen bin ich nicht da. Wenn du wirklich tiefer wissen willst wie man das macht bin gern bereit das zu erklären.