Oled attiny84 libreria

void OzOLED::printBigNumber(const char *number, byte X, byte Y, byte numChar){
// big number pixels: 24 x 32

 // Y - page
	byte column = 0;
	byte count = 0;

	while(number[count] && count<numChar){
	
	
		setCursorXY(X, Y);
		
		for(byte i=0; i<96; i++) {
		
			// if character is not "0-9" or ':'
			if(number[count] < 46 || number[count] > 58)	
				sendData(0);
			else 				
				sendData(pgm_read_byte(&bigNumbers[number[count]-46][i]));
			
			
			if(column >= 23){
				column = 0;
				setCursorXY(X, ++Y);
			}
			else				
				column++;

		}
		
		count++;
		
		X = X + 3;
		Y = Y - 4;
		
	
	}

	
	
}


esta es la funcion para ver el tamaño del numero,
 que modifico para agrandarlo un poco mas ?

vengo por su sabiduria! va mejorando pero como puedo hacer que se mueva mas dinámico el cambio de voltaje , moves el pote y te salta de 5 volt la muestra, esta en 5 volt giras un poco y ya te salta a 8 sin pasar por el resto, calculo que no sera facil hacer eso

En lugar de 5/1023 usa directamente su resultado 0.0048875855

La presentación luce lenta porque el ATtiny no tiene I2C hardware y es simulado.
Esto esta mal hecho

void displayOLED() {
  char tmp[10];
  dtostrf(lectura, 0, 1, tmp);
  OzOled.printBigNumber(tmp, 4, 2, 4);

}

dtostrf convierte un float a cadena de chars. Hasta ahi bien
El primer digito es la suma de todos los caracteres que desea ver. Le has puesto 0
Eso esta mal.
Debería ser 3 como minimo. Usas un tmp de 10 char de modo que puedes mostrar 10 caracteres incluido el punto decimal.
El segundo digito es la cantidad de decimales.
Entonces usalo asi

void displayOLED() {
  char tmp[10];
  dtostrf(lectura, 3, 1, tmp);
  OzOled.printBigNumber(tmp, 4, 2, 4);

}
1 Like

Se puede definir otros pines para la comunicación del oled al attiny84?

Si claro.
Busca en

#include "TinyWireM.h"

y lo verás.

1 Like
#if defined(__AVR_ATtiny84__) | defined(__AVR_ATtiny44__)
#define DDR_USI DDRA
#define PORT_USI PORTA
#define PIN_USI PINA
#define PORT_USI_SDA PORTA6
#define PORT_USI_SCL PORTA4
#define PIN_USI_SDA PINA6
#define PIN_USI_SCL PINA4
#endif

tendria que cambiarlo directamente en la libreria ?

Esos dos cambia

Si quiero usar el puerto b pb0 y pb2 no hay que cambiar ddr

Si, también, pero todo lo tendrias que pasar al B
Saludos

1 Like

Tengo un problema, subo las librerías y no aparecen en la lista de librerías, , me dice que la librería ya existe y no la encuentro para subirla , como hago? y como se puede borrar librerías que ya no uso?, gracias

Si te refieres al IDE, solo ve a la carpeta donde esta libraries y borra la librería que este de mas.

No me aparecen en ninguna carpeta, son las librerías que cargo en zip, igual creo que no me esta funcionando el cambio sigue saliendo la señal por pin a6 y a4 para el oled, no se si va funcionar por pb0 y pb2

Creo que no tenes claro donde esta funcionando tu IDE o tal vez tengas varias instalaciones, dando vuelta.
En Windows esta en
Documentos\Arduino\libraries
ahi buscá las librerias instaladas, las borrás y listo.
Otra alternativa es ir al Administrador de librerias, buscar instaladas y al encontrarla tenes una opción para eliminarla si mal recuerdo.

Ahí las encontré hay 2 carpetas, en documentos/Arduino/librerías ahí van las que instalamos, pero no me deja incluirlas, no se si será porque tengo 2 librerías iguales con distinto nombre pero no puedo subir la que modifique!

Es un directorio restringido, con protección.
Como las has editado?

Entre y puedo abrirlas son las que podemos instalar, la otra carpeta que esta en el disco, arduino libreria son las que vienen por defecto, esas no probé en borrarlas

Solo borra las que hayas instalado por tu cuenta.

Si, las otras no las borro!

Problemon no se como limpiar eso, en la salida sda y scl hay que poner resistencias de 10k al positivo?