When i connected it to DUE and run the i2c scanner it finds the module at 0x48.
After i upload the same example sketch I have an error all the time:
the example sketch modified to just analog.write:
/*
* PCF8591 Analog Port Expand
* Read all analog pins and write value on analog ouput
*
* by Mischianti Renzo <http://www.mischianti.org>
*
* https://www.mischianti.org/2019/01/03/pcf8591-i2c-analog-i-o-expander/
*
*
* PCF8574 ----- Esp32
* A0 ----- GRD
* A1 ----- GRD
* A2 ----- GRD
* SDA ----- A4
* SCL ----- A5
*
*
*/
#include "Arduino.h"
#include "PCF8591.h"
#define PCF8591_I2C_ADDRESS 0x48
PCF8591 pcf8591(PCF8591_I2C_ADDRESS);
void setup()
{
Serial.begin(115200);
pcf8591.begin();
}
void loop()
{
pcf8591.analogWrite(255);
}
C:\Users\Sebastian\Documents\Arduino\libraries\PCF8591_library\PCF8591.cpp: In member function 'void PCF8591::begin()':
C:\Users\Sebastian\Documents\Arduino\libraries\PCF8591_library\PCF8591.cpp:88:26: error: no matching function for call to 'TwoWire::begin(uint8_t&, uint8_t&)'
_wire->begin(_sda, _scl);
^
C:\Users\Sebastian\Documents\Arduino\libraries\PCF8591_library\PCF8591.cpp:88:26: note: candidates are:
In file included from C:\Users\Sebastian\Documents\Arduino\libraries\PCF8591_library\PCF8591.h:31:0,
from C:\Users\Sebastian\Documents\Arduino\libraries\PCF8591_library\PCF8591.cpp:28:
C:\Users\Sebastian\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src/Wire.h:38:7: note: void TwoWire::begin()
void begin();
^
C:\Users\Sebastian\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src/Wire.h:38:7: note: candidate expects 0 arguments, 2 provided
C:\Users\Sebastian\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src/Wire.h:39:7: note: void TwoWire::begin(uint8_t)
void begin(uint8_t);
^
C:\Users\Sebastian\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src/Wire.h:39:7: note: candidate expects 1 argument, 2 provided
C:\Users\Sebastian\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src/Wire.h:40:7: note: void TwoWire::begin(int)
void begin(int);
^
C:\Users\Sebastian\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src/Wire.h:40:7: note: candidate expects 1 argument, 2 provided
exit status 1
Błąd kompilacji dla płytki Arduino Due (Programming Port).
I connected the SDA/SCL to PIN SDA1 and SCL1 ( I am using also the i2c screen). But I tried also to disconect the screen and use the 20/21 pins - still nothing helps.
Please help me to get it to work, everything on due is co complicated, wish I have bought mega...
Tried both didn't work.
Downloaded all possible libraries and the Adafruit one works at 3.3 Vref.
But still the vmax is like 2.8V but that is just the case of the board. I heard that unsoldering one Resistor makes it work to full values.
So i have to make an op amp with a gain of ~3 to make it 0-10V.
@Boffin
Of course it does not work
I have connected the PFC to SDA 20 SCL 21
and now LCD to SDA1 SCL1
When I run this sketch:
#include <Adafruit_PCF8591.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display
// Make sure that this is set to the value in volts of VCC
#define ADC_REFERENCE_VOLTAGE 3.3
Adafruit_PCF8591 pcf = Adafruit_PCF8591();
void setup() {
{
lcd.init(); // initialize the lcd
lcd.init();
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(3,0);
lcd.print("Hello, world!");
}
Serial.begin(115200);
Serial.println("# Adafruit PCF8591 demo");
if (!pcf.begin()) {
Serial.println("# Adafruit PCF8591 not found!");
while (1)
delay(10);
}
Serial.println("# Adafruit PCF8591 found");
pcf.enableDAC(true);
Serial.println("AIN0, AIN1, AIN2, AIN3");
}
uint8_t dac_counter = 0;
void loop() {
// Make a triangle wave on the DAC output
pcf.analogWrite(12);
delay(1000);
}
float int_to_volts(uint16_t dac_value, uint8_t bits, float logic_level) {
return (((float)dac_value / ((1 << bits) - 1)) * logic_level);
}
I don’t understand. Does the board work or not?
If it doesn't work, then that's one issue.
If it works, but gives a low voltage, then I already wrote to you about the problems of this board caused by the LED.
It works with Adafruit library.
I know about the LED will try it later.
Now i have a problem because running both LCD and DAC board, the LCD part is not working... For sure it is because of using 2 I2C.
Fixed that:
Changed the cpp file of Liquid Crystal library adding:
extern TwoWire Wire1;
and changing each "Wire" in code for "Wire1" to make it use the second I2c
now have to convert it to 0-10V and it's perfect