Go Down

Topic: Frage zum PCA 9685 12-bit PWMshield (Read 2144 times) previous topic - next topic

1to8modelmaker

Arduino mit dem PCA 9685 und einer Fernsteuerung

Tommy56

Ich glaube, Du solltest dieses Projekt erst einmal für ein paar Tage beiseite legen und Dich mit den Grundlagen beschäftigen. Danach könntest Du die Dir gegebenen Hinweise evtl. verstehen.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

postmaster-ino

#47
Dec 04, 2018, 07:16 pm Last Edit: Dec 04, 2018, 07:18 pm by postmaster-ino
Hi

Unterm Strich hast Du Dich gekonnt gegen unsere Vorschläge gewehrt - Respekt!

Dein(e) Fehler waren
- keine Ähnlichkeit mit Einem der Beispiele
- kein Starten der PWM-Instanzen in setup(), wie's in den Beispielen gezeigt wird
- Prototyp der Funktion int pulseWidth(int angle); IN loop()
- loop() schließende  Klammer hinter diesem Prototyp
- schließende Klammer am Ende des Sketch (somit mehr Klammern zu als auf)
- fehlendes Komma im Funktionsaufruf pwm4
- fehlende Funktion pulseWith
Code: [Select]

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver pwm1 = Adafruit_PWMServoDriver(0x40);
Adafruit_PWMServoDriver pwm2 = Adafruit_PWMServoDriver(0x41);

int umschalterPin = 2; // umschalten zwischen a und b an Pin 2 angeschlossen
int umschalten = 0;

const int LED1 = 13; //LEDkennung zwischen a und b

#define MIN_PULSE_WIDTH       650
#define MAX_PULSE_WIDTH       2250 //ueber diese Variable den Weg anpassen
#define DEFAULT_PULSE_WIDTH   1500
#define FREQUENCY             50

uint16_t ch1;
uint16_t ch2;
uint16_t ch3;
uint16_t ch4;
uint16_t ch5;
uint16_t ch6;
uint16_t ch7;
uint16_t ch8;
uint16_t ch9;
uint16_t ch10;
uint16_t ch11;  // Modell 1
uint16_t ch12;
uint16_t ch13;
uint16_t ch14;
uint16_t ch15;
uint16_t ch16;
uint16_t ch17;
uint16_t ch18;
uint16_t ch19;
uint16_t ch20;
uint16_t ch21;
uint16_t ch22;  // Modell 2

const byte numch1 = 1;
const byte numch2 = 2;
const byte numch3 = 3;
const byte numch4 = 4;
const byte numch5 = 5;
const byte numch6 = 6;
const byte numch7 = 7;
const byte numch8 = 8;
const byte numch9 = 9;
const byte numch10 = 10;
const byte numch11 = 11;
const byte numch12 = 12;
const byte numch13 = 13;
const byte numch14 = 14;
const byte numch15 = 15;
const byte numch16 = 16;
const byte numch17 = 17;
const byte numch18 = 18;
const byte numch19 = 19;
const byte numch20 = 20;
const byte numch21 = 21;
const byte numch22 = 22;

void setup()
{
  pinMode(LED1, OUTPUT);
  pinMode(12, INPUT);
  pinMode(11, INPUT);
  pinMode(10, INPUT);
  pinMode(9, INPUT);
  pinMode(8, INPUT);
  pinMode(7, INPUT);
  pinMode(6, INPUT);
  pinMode(5, INPUT);
  pinMode(4, INPUT);
  pinMode(3, INPUT);
  pinMode(22, INPUT);

  //Ich habe mich Mal am Beispiel orientiert ... kompiliert aber auch ohne diese 4 Zeilen
  pwm1.begin();
  pwm1.setPWMFreq(60);  // Analog servos run at ~60 Hz updates
  pwm2.begin();
  pwm2.setPWMFreq(60);  // Analog servos run at ~60 Hz updates
 
}
void loop() {

  //int pulseWidth(int angle);  //Hier Das soll wohl eine Funktion darstellen, die Unten aufgerufen wird
  //}   // <-- WAS ist mit dieser Klammer???
  // OHNE kommen die folgenden Zeilen nämlich IN die loop()-Funktion

  pwm1.setPWM(numch1, 1, pulseWidth(ch1));
  pwm1.setPWM(numch2, 1, pulseWidth(ch2));
  pwm1.setPWM(numch3, 1, pulseWidth(ch3));
  pwm1.setPWM(numch4,  1, pulseWidth(ch4));  //hier fehlt(e) ein Komma
  pwm1.setPWM(numch5, 1, pulseWidth(ch5));
  pwm1.setPWM(numch6, 1, pulseWidth(ch6));
  pwm1.setPWM(numch7, 1, pulseWidth(ch7));
  pwm1.setPWM(numch8, 1, pulseWidth(ch8));
  pwm1.setPWM(numch9, 1, pulseWidth(ch9));
  pwm1.setPWM(numch10, 1, pulseWidth(ch10));
  pwm1.setPWM(numch11, 1, pulseWidth(ch11));
  pwm2.setPWM(numch12, 1, pulseWidth(ch12));
  pwm2.setPWM(numch13, 1, pulseWidth(ch13));
  pwm2.setPWM(numch14, 1, pulseWidth(ch14));
  pwm2.setPWM(numch15, 1, pulseWidth(ch15));
  pwm2.setPWM(numch16, 1, pulseWidth(ch16));
  pwm2.setPWM(numch17, 1, pulseWidth(ch17));
  pwm2.setPWM(numch18, 1, pulseWidth(ch18));
  pwm2.setPWM(numch19, 1, pulseWidth(ch19));
  pwm2.setPWM(numch20, 1, pulseWidth(ch20));
  pwm2.setPWM(numch21, 1, pulseWidth(ch21));
  pwm2.setPWM(numch22, 1, pulseWidth(ch22));
}


//Hier ist die neue Funktion
int pulseWidth(int angle){
  return angle;
}

Ob Das nun halbwegs macht, was Du Dir versprochen hast - wirst nur Du herausfinden können.
Kompiliert für UNO:
Quote
Der Sketch verwendet 2482 Bytes (7%) des Programmspeicherplatzes. Das Maximum sind 32256 Bytes.
Globale Variablen verwenden 188 Bytes (9%) des dynamischen Speichers, 1860 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

1to8modelmaker

Moin Postmaster,das Signal von der Funke wird immer noch nicht weitergegeben an die Shielde.
Mit freundlichem Gruß
1to8Modelmaker

combie

Quote
das Signal von der Funke wird immer noch nicht weitergegeben an die Shielde.
Wie wertest du denn das Signal der Funke aus?

Oder sollen wir dir das auch noch bauen?
Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

1to8modelmaker

Die Signalauswertung kann ich selber einbauen

Go Up