Problema con libreria Datacoder

Hola a todos, soy nuevo en el foro, luego de buscar ayuda decidí dejar un pregunta. Estoy fabricando una placa modelo tipo PLC con un atmega328 standalone, pero para facilitarme la tarea estoy armando todo en un arduino nano en una protoboard. Tiene: un display I2C, un reloj ds3231, 3 leds (que representan futuras salidas para relees), un sensor de temperatura ds18b20 y un modulo RF que envía información a un Attiny85.
Todo me funciona bien pero resulta que cuando cargo la libreria del RF (data coder) en el PIN12, por ejemplo, resulta que me genera una pequeña onda cuadrada en el pin 10 (justo en el momento cuando el RF envía la señal) y no logro solucionar el problema. Puse el osciloscopio y se claramente que con esa librería me ocupa ese pin.
Que puedo hacer??

muchas gracias!!

Atmega328_emr.ino (3.42 KB)

Por favor, no crees dos hilos similares, hasta dar por solucionado uno no puedes iniciar otro similar.

Te recomiendo leer las normas del foro, que te indiqué en el otro hilo.
Coloca tambien el enlace de la librería dacoder para poder evaluar donde usa el pin 10 que consultas.
Pero si buscas en la librería debería haber algun llamado, supongo.

Otra cosa, tu código no es tan grande para no postearlo entero y que sea mas fácil su lectura por todos los usuarios del foro.

/*

 Referencia pines:
 
 D3: tacómetro ventilador (RPM)
 D5: pwm (velocidad ventilador)
 D6: Sensor de temperatura
 D7: Led
 D8: Buzzer
 D9: Relay
 D10: Relay
 D11: Relay
 D13: Emisor
 A4: Reloj y display
 A5: Reloj y display
 
 */


#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 6
#define TEMPERATURE_PRECISION 11
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress tempDeviceAddress;
#include <DS3231.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
DS3231 clock;
RTCDateTime dt;

#include <DataCoder.h>
#include <VirtualWire.h>
const int transmit_pin = 13;
const int baudRate = 800;

unsigned long ultimotiempo = 0;
unsigned long ultimotiempo2 = 0;
int pantalla = 0;
float temp = 0.0;
int rel1 = 9;
int rel2 = 10;
int rel3 = 11;

byte termo[8] = {
  B00100,  B01010,  B01010,  B01110,  B01110,  B11111,  B11111,  B01110
};

void bienvenida()
{
  lcd.setCursor(4, 0);           
  lcd.print("Pirulito");
  lcd.setCursor(0, 1);          
  lcd.print("Iniciando...");      
}


void temperatura()
{
  lcd.setCursor(2, 0);
  lcd.print("Temperatura:");
  lcd.setCursor(4, 1);
  lcd.print(temp,2);
  lcd.setCursor(10, 1);
  lcd.print((char)223);          
  lcd.setCursor(11, 1);
  lcd.print("C");  
  lcd.setCursor(15, 1);
  lcd.print(char(0));
  lcd.setCursor(0, 1);
  lcd.print(char(0));
}


void tiempo()
{
  dt = clock.getDateTime();
  lcd.setCursor(3, 0);
  lcd.print(clock.dateFormat("d", dt));
  lcd.setCursor(5, 0);
  lcd.print("/");
  lcd.setCursor(6, 0);
  lcd.print(clock.dateFormat("m", dt));
  lcd.setCursor(8, 0);
  lcd.print("/");
  lcd.setCursor(9, 0);
  lcd.print(dt.year);

  lcd.setCursor(4, 1);
  lcd.print(clock.dateFormat("H", dt));
  lcd.setCursor(6, 1);
  lcd.print(":");
  lcd.setCursor(7, 1);
  lcd.print(clock.dateFormat("i", dt));
  lcd.setCursor(9, 1);
  lcd.print(":");
  lcd.setCursor(10, 1);
  lcd.print(clock.dateFormat("s", dt));


}


void setup(){
  clock.begin();
  //clock.setDateTime(2017, 1, 19, 14, 23, 00);
  Serial.begin(9600);
  SetupRFDataTxnLink(transmit_pin, baudRate);
  lcd.begin();
  lcd.backlight();
  Wire.beginTransmission(0x68);
  Wire.write(0x07);
  Wire.write(0x10);
  Wire.endTransmission();
  lcd.createChar(0, termo);
  sensors.begin();
  sensors.getAddress(tempDeviceAddress, 0);
  sensors.setResolution(tempDeviceAddress, TEMPERATURE_PRECISION);
  bienvenida();
  delay(2000);
  lcd.clear();
  pinMode(rel1, OUTPUT);
  pinMode(rel2, OUTPUT);
  pinMode(rel3, OUTPUT);
  digitalWrite(rel1, LOW);
  digitalWrite(rel2, LOW);
  digitalWrite(rel3, LOW);
}


void loop(){

  unsigned long tiempoactual = millis();


  if(tiempoactual - ultimotiempo > 5000) {
    ultimotiempo = tiempoactual;   
    lcd.clear();
    pantalla++;
    if (pantalla == 2) pantalla = 0;
  }

  if(tiempoactual - ultimotiempo2 > 1000) {
    ultimotiempo2 = tiempoactual; 
    
    sensors.requestTemperatures();
    temp = sensors.getTempCByIndex(0);

    float outArray[RF_DATA_ARRAY_SIZE];
    outArray[0] = temp;
    union RFData outDataSeq;
    EncodeRFData(outArray, outDataSeq);
    TransmitRFData(outDataSeq);
  }


   float outArray[RF_DATA_ARRAY_SIZE];
    outArray[0] = temp;
    union RFData outDataSeq;
    EncodeRFData(outArray, outDataSeq);
    TransmitRFData(outDataSeq);
 


  switch(pantalla)
  {
  case 0: 
    temperatura(); 
    break;

  case 1:

    tiempo();

    break;

  default:
    // cannot happen -> showError() ?
    break;
  }
}

Hola, aprovecho la presente para pedir disculpas por el mal entendido y las molestias ocasionadas. Aquí van las librerías.

muchísimas gracias.

libraries.zip (55.7 KB)

Coloca tambien el enlace de la librería dacoder para poder evaluar donde usa el pin 10 que consultas.

Y me das las librerías todas las demás menos esa.

uh perdon, lo que ocurre es que estaba con protegida y el winrar la omitió.

DataCoder.zip (7.91 KB)

Hola quería decirle que ya encontré la solución: resulta que la libreria virtualwire es la que usa ese pin. Para darme cuenta entré a revisar el archivo "virtualwire.h" y por defecto está utilizando la salida digital número 10 y para solucionarlo la obligué a usar la salida 12 para que coincida con datacoder en void setup:

void setup() {

vw_set_ptt_pin(transmit_pin); SetupRFDataTxnLink(transmit_pin, baudRate);

}

gracias.

Bien hecho!!! Agrega [solucionado] a tu titulo