INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Library für TCS3200
04.05.2015, 08:43 (Dieser Beitrag wurde zuletzt bearbeitet: 18.05.2015 09:19 von DHunger.)
Beitrag #1
Library für TCS3200
Hallo,

ich habe eine library für den TCS3200 von dfrobot erstellt, allerdings gibt diese (aus meiner Sicht) unerklärliche Fehler aus. Confused Bitte um Hilfe!!!

Arduino code:
Code:
#include <TCS3200.h>

int ports [5] = {14, 15, 16, 17, 18};
int out = 18;

void setup(){
  tcs3200.setmodes(ports[], out);
  tcs3200.setcolor("red", ports[]);
  if(tcs3200.iscolor(out)){}
}

void loop(){}

tcs3200.h:
Code:
#ifndef tcs3200_h
#define tcs3200_h

#include "Arduino.h"

class tcs3200{
    public:
        void setmodes(int ports [], int out);
        void setcolor(char color [], int ports []);
        boolean iscolor(int out);
        
    private:
        int ports [];
        int out;
        int l;
        int i;
        char color [];
};

#endif

tcs3200.cpp:
Code:
#include "Arduino.h"
#include "TCS3200.h"

void tcs3200::setmodes(int ports [5], int out){
    for(int i = 0; i<5; i++){
        if(ports[i] == out){
            pinMode(ports[i], INPUT);
        }else{
            pinMode(ports[i], OUTPUT);
        }
    }
}

void tcs3200::setcolor(char color [], int ports []){
    if(color == "red"){
        digitalWrite(ports[2], LOW);
        digitalWrite(ports[3], LOW);
    }else if(color == "blue"){
        digitalWrite(ports[2], LOW);
        digitalWrite(ports[3], HIGH);
    }else if(color == "none"){
        digitalWrite(ports[2], HIGH);
        digitalWrite(ports[3], LOW);
    }else if(color == "green"){
        digitalWrite(ports[2], HIGH);
        digitalWrite(ports[3], HIGH);
    }else{}
}

boolean tcs3200::iscolor(int out){
    if(digitalRead(out) == HIGH){
        return(true);
    }else{
        return(false);
    }
}

FEHLER:
Code:
sketch_may04a.ino: In function 'void setup()':
sketch_may04a:7: error: expected unqualified-id before '.' token
sketch_may04a:8: error: expected unqualified-id before '.' token
sketch_may04a:9: error: expected primary-expression before '.' token
sketch_may04a:9: error: expected `)' before ';' token
sketch_may04a:9: error: expected primary-expression before ')' token
sketch_may04a:9: error: expected `;' before ')' token
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.05.2015, 13:31
Beitrag #2
Smile just a bump
bump, bitte antworten und ich kann mit dem bumpen aufhören Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.05.2015, 14:30
Beitrag #3
RE: Library für TCS3200
Hi,
ich gebe mal einen Tipp für die erste Fehlermeldung: tcs3200 ist eine Klasse und kein Objekt.
So ein paar Grundlagen sollte man schon haben, bevor man eine Library schreibt.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.05.2015, 14:08
Beitrag #4
RE: Library für TCS3200
Ich habe es jetzt geändert, aber jetzt tauchen neue Fehler auf:

sketch_may12a.ino:5:1: error: 'TCS' does not name a type
sketch_may12a.ino: In function 'void setup()':
sketch_may12a.ino:8:3: error: 'tcs' was not declared in this scope
sketch_may12a.ino:8:22: error: expected primary-expression before ']' token
sketch_may12a.ino:9:22: error: expected primary-expression before ']' token
sketch_may12a.ino:9:31: error: expected primary-expression before ']' token

sketch:
.txt  sketch_may12a.txt (Größe: 228 Bytes / Downloads: 50)

header:
.h  TCS3200.h (Größe: 329 Bytes / Downloads: 37)

cpp-datei:
.cpp  TCS3200.cpp (Größe: 777 Bytes / Downloads: 39)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.05.2015, 13:18
Beitrag #5
RE: Library für TCS3200
Moin,
versuche es mal so.
Zumindest geht's bei mir durch den Compiler. Testen kann ich es aber nicht.
Grüße Ricardo
TCS3200.h:
Code:
#ifndef tcs3200h
#define tcs3200h
#include "Arduino.h"
class TCS{
    public:
        TCS();
        void setmodes(byte ports [], byte out);
        void setcolor(char color [], byte ports []);
        boolean iscolor(byte out);
        
    private:
        byte ports [];
        byte out;
        int i;
        char color [];
};
#endif
TCS3200.cpp:
Code:
#include "Arduino.h"
#include "TCS3200.h"
TCS::TCS(){}
void TCS::setmodes(byte ports [], byte out){
    for(unsigned int i = 0; i<sizeof(ports)/sizeof(byte); i++){
        if(ports[i] == out){
            pinMode(ports[i], INPUT);
        }else{
            pinMode(ports[i], OUTPUT);
        }
    }
}
void TCS::setcolor(char color [], byte ports []){
    if(color == "red"){
        digitalWrite(ports[2], LOW);
        digitalWrite(ports[3], LOW);
    }
    else if(color == "blue"){
        digitalWrite(ports[2], LOW);
        digitalWrite(ports[3], HIGH);
    }
    else if(color == "none"){
        digitalWrite(ports[2], HIGH);
        digitalWrite(ports[3], LOW);
    }
    else if(color == "green"){
        digitalWrite(ports[2], HIGH);
        digitalWrite(ports[3], HIGH);
    }
    else {}
}
boolean TCS::iscolor(byte out){
    if(digitalRead(out) == HIGH){
        return(true);
    }else{
        return(false);
    }
}
keywords.txt:
Code:
TCS    KEYWORD1
setmodes    KEYWORD2
setcolor    KEYWORD2
iscolor    KEYWORD2
Sketch:
Code:
#include <TCS3200.h>
byte ports [] = {14, 15, 16, 17 ,18};
byte out = 18;
char color [] = "red";
TCS tcs;
void setup()
{
  tcs.setmodes(ports, out);
  tcs.setcolor(color, ports);
  if(tcs.iscolor(out)){}
}
void loop() {}

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.05.2015, 09:15 (Dieser Beitrag wurde zuletzt bearbeitet: 18.05.2015 09:16 von DHunger.)
Beitrag #6
RE: Library für TCS3200
Danke jetzt funktioniert's.

Huh Huh Huh Wie konnte ich nur so dumm sein und die keywords.txt vergessen? Huh Huh Huh
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.05.2015, 20:51
Beitrag #7
RE: Library für TCS3200
(14.05.2015 13:18)rkuehle schrieb:  Moin,
versuche es mal so.
Zumindest geht's bei mir durch den Compiler. Testen kann ich es aber nicht.
Grüße Ricardo
TCS3200.h:
Code:
#ifndef tcs3200h
#define tcs3200h
#include "Arduino.h"
class TCS{
    public:
        TCS();
        void setmodes(byte ports [], byte out);
        void setcolor(char color [], byte ports []);
        boolean iscolor(byte out);
        
    private:
        byte ports [];
        byte out;
        int i;
        char color [];
};
#endif
TCS3200.cpp:
Code:
#include "Arduino.h"
#include "TCS3200.h"
TCS::TCS(){}
void TCS::setmodes(byte ports [], byte out){
    for(unsigned int i = 0; i<sizeof(ports)/sizeof(byte); i++){
        if(ports[i] == out){
            pinMode(ports[i], INPUT);
        }else{
            pinMode(ports[i], OUTPUT);
        }
    }
}
void TCS::setcolor(char color [], byte ports []){
    if(color == "red"){
        digitalWrite(ports[2], LOW);
        digitalWrite(ports[3], LOW);
    }
    else if(color == "blue"){
        digitalWrite(ports[2], LOW);
        digitalWrite(ports[3], HIGH);
    }
    else if(color == "none"){
        digitalWrite(ports[2], HIGH);
        digitalWrite(ports[3], LOW);
    }
    else if(color == "green"){
        digitalWrite(ports[2], HIGH);
        digitalWrite(ports[3], HIGH);
    }
    else {}
}
boolean TCS::iscolor(byte out){
    if(digitalRead(out) == HIGH){
        return(true);
    }else{
        return(false);
    }
}
keywords.txt:
Code:
TCS    KEYWORD1
setmodes    KEYWORD2
setcolor    KEYWORD2
iscolor    KEYWORD2
Sketch:
Code:
#include <TCS3200.h>
byte ports [] = {14, 15, 16, 17 ,18};
byte out = 18;
char color [] = "red";
TCS tcs;
void setup()
{
  tcs.setmodes(ports, out);
  tcs.setcolor(color, ports);
  if(tcs.iscolor(out)){}
}
void loop() {}

Hallo Ricardo, Du bist der einer der wenigen die sich nicht lustig machen und versuchst zu helfen die meisten Trotzen nur vor Überheblichkeit und machen sich nur lustig. Wir kamen alle dumm zu Welt und haben uns erst schlau machen müssen leider nicht immer mit den gleichen Erfolg. Musste mal raus Danke Ricardo mach bitte weiter so.

Gruß Jörg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Library unter Linux Mint installieren atmel900 1 95 22.11.2016 14:12
Letzter Beitrag: rkuehle
  Dallas Temp Library und LiquidCrystal_i2c relay 20 468 27.10.2016 12:20
Letzter Beitrag: hotsystems
  Problem mit SD Card Library BennIY 4 194 06.10.2016 18:38
Letzter Beitrag: Bitklopfer
  Wo kann ich hier noch Code spahren? (SPI-,Ethernet-,SD-,GSM-Library) avoid 4 384 05.06.2016 14:16
Letzter Beitrag: avoid
  [Suche] Library Programmierer/in für privates Projekt avoid 8 578 19.05.2016 15:01
Letzter Beitrag: avoid
  PID ohne Library MeisterQ 5 534 01.05.2016 09:23
Letzter Beitrag: MeisterQ
  Problem mit Pin Change Interrupt in Library Retian 0 321 10.02.2016 23:37
Letzter Beitrag: Retian
  433 MHZ RCSwitch Library Frage Marc2014 5 713 11.01.2016 16:28
Letzter Beitrag: hotsystems
  Library - Variable in Memberfunktion Scheams 1 410 10.01.2016 22:40
Letzter Beitrag: Rene
  Accel Stepper Library für Schrittmotoren Problem Rampe fahren Schrittmotor 0 989 13.10.2015 21:03
Letzter Beitrag: Schrittmotor

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste