создание собственных библеотек

qwertyArd
Offline
Зарегистрирован: 10.11.2018

здраствуйте

я столкнулся с проблемой, когда решил написать собственную библеотеку.  Проблема в следующем в class в public мне надо объявить конструктор с 4 аргументами

class led{
public:
	led(uint8_t rpin, uint8_t gpin, uint8_t bpin, uint8_t Vpin);//вот он
        void ledColor(int r, int g, int b);
private:
	int _rpin, _gpin, _bpin, _Vpin;
};

но когда в конструкторе аргументов больше 1 arduino IDE на меня ругается : led(бла бла бла бла) содержит 4 аргумента доступно 1

но во всех библеотеках(к устройствам более, чем с 1 пином) всегда несколько аргументов, да к тому же еще и разных типов

 

qwertyArd
Offline
Зарегистрирован: 10.11.2018

подскажите что я не понял или перепуталб никак не могу разобраться

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Может, код покажете?

А то хрустальные шары Клапауций запретил.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

qwertyArd,Может вместо написания своей библиотеки, вы изучите язык Си/Си++. Ваши ошибки от банальной неграмотности. Не на форуме это выяснять.

/**/
class led {
  private:
    uint8_t _rpin, _gpin, _bpin, _Vpin;
    int _r, _g, _b;
  public:
    led(uint8_t rpin, uint8_t gpin, uint8_t bpin, uint8_t Vpin):
      _rpin(rpin), _gpin(gpin), _bpin(bpin), _Vpin(Vpin) {};
    void ledColor(int r, int g, int b) {
      _r = r; _g = g; _b = b;
    };
};
//-------------------------------
led UNIT(1, 2, 3, 4);
//------------------------------
void setup() {
UNIT.ledColor(1,2,3);

}

void loop() {

}

Ну и так музыкальная пауза на эту тему.

Пошел купаться Уверлей оставив дома Доротею

купил он пару пузырей купил он пару пузырей 

нырять и плавать не умея

https://mp-3s.ru/songs/eta-zhenshina-v-okne_poshel-kupatsja-veverlej

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

qwone пишет:
вместо написания своей библиотеки
А разве он пишет библиотеку? Вы невнимательны.

qwertyArd
Offline
Зарегистрирован: 10.11.2018

Спасибо, помогло. Просто про это в интернете очень мало инфомации

вот что у меня получилось 

это библеотека

#define lc_h
#include "Arduino.h"

class led{
private:
	int _rpin, _gpin, _bpin, _Vpin, _varpin;
public:
		led(uint8_t rpin, uint8_t gpin, uint8_t bpin, uint8_t Vpin) :
		_rpin(rpin), _gpin(gpin), _bpin(bpin), _Vpin(Vpin) {
			pinMode(rpin, OUTPUT);
			_rpin = rpin;
			pinMode(gpin, OUTPUT);
			_gpin = gpin;
			pinMode(bpin, OUTPUT);
			_bpin = bpin;
			pinMode(Vpin, OUTPUT);
			_Vpin = Vpin;
		};
		void ledColor(int r, int g, int b, int varpin) {
			_varpin = map(analogRead(varpin), 0, 1023, 0, 255);
			digitalWrite(_rpin, r);
			digitalWrite(_gpin, g);
			digitalWrite(_bpin, b);
			analogWrite(_Vpin, _varpin);

		};
};

это код ардуино

#include <lc.h>

led lol(12,11,10,5);

void setup(){
}
  
void loop(){
 lol.ledColor(1,0,1,0);
}

пример простой и примитивный, но опять же повторюсь в интернете мало информации

b707
Offline
Зарегистрирован: 26.05.2017

"Про это" в интернете просто море информации - ищите документацию по классам , а не по "библеотекам"

А у вас опять куча ошибок.

Вызов контруктора в форме

led(uint8_t rpin, uint8_t gpin, uint8_t bpin, uint8_t Vpin) :
		_rpin(rpin), _gpin(gpin), _bpin(bpin), _Vpin(Vpin)

уже инициализирует параметры _rpin _gpin и тд, поэтому строчки 11,13,15 и 17 лишние

Интересно, что вы хотели сказать строчкой 1 - к чему этот дефайн, что он определяет?

И посмотрите, наконец. в словарике, как правильно пишется слово библиотека...