Hey guys:
I want to share my successfully completed project now with auto sensor using ADCIN of ESP8266 Follow the manual and diagram
Basic Operation
Initialization
Turn on the machine:
Press the on/off button. The machine will start and the display will show "MACHINE ON".
The sensor check and menu timers will activate.
Menu Navigation
Using the Encoder:
Rotate the encoder to navigate through the menu options.
Menu options include water level selection and wash program.
Water Level Selection:
Level 1: "LEVEL 1 AG" - Low
Level 2: "LEVEL 2 AG" - Medium
Level 3: "LEVEL 3 AG" - High
Wash Program Selection:
Normal Program: "PROGRAM: NORMAL"
Quick Program: "PROGRAM: FAST"
Day by Day Program: "PROGRAM: DAY BY DAY"
Heavy Program: "PROGRAM: HEAVY"
Rinse: "PROGRAM: RINSE"
Spin: "PROGRAM: SPIN"
Long Sauce: "PROGRAM: LONG SAUCE"
Running a Wash Program
Start Normal Wash:
Select "PROGRAM: NORMAL" and press the Start button.
The water valve will open until the desired water level is reached.
The motor will begin to operate alternating between left and right movements.
Start Quick Wash:
Select "PROGRAM: FAST" and press the Start button.
Similar to the normal program, but with reduced operating times.
Start Day by Day Wash:
Select "PROGRAM: DAY BY DAY" and press the Start button.
Similar to the normal program, but with operating times adjusted for everyday clothes.
Start Heavy Wash:
Select "PROGRAM: HEAVY" and press the Start button.
Similar to the normal program, but with longer operating times and additional pauses.
Other Functions
Rinse off:
Select "PROGRAM: RINSE" and press the Start button.
The machine will perform a fill and drain cycle to rinse the clothes.
Centrifuge:
Select "PROGRAM: SPIN" and press the Start button.
The machine will spin the clothes to remove excess water.
Long Sauce:
Select "PROGRAM: LONG SAUCE" and press the Start button.
The machine will soak clothes for an extended period of time before starting to wash.
Technical details
Timer Functions
Timer1 (Menu): Controls menu navigation and selection.
Timer2 (Star_lavagem_Normal): Starts the normal washing program.
Timer3 (Filling): Control the filling of the machine.
Timer4 (Long_Sauce): Controls the long sauce.
Timer5 (Check_Sensor): Checks the water level.
Timer6 (Star_lavagem_Rapido): Starts the quick wash program.
Timer7 (Star_lavagem_Dia_Dia): Starts the washing program day by day.
Timer8 (Star_lavagem_Pesado): Starts the heavy wash program.
Timer9 (Spin): Starts centrifugation.
Pins and Relays
DS, STCP, SHCP: Pins for controlling the shift registers.
On_ Off, Start, EncoderPinA, EncoderPinB: Pins for input control (buttons and encoder).
Relays: Control water valves, motors and other actuators.
Display control
UpdateDisplay: Method to update the information displayed on the SSD1306 screen.
Maintenance and Troubleshooting
Check connections: Make sure all pins and connectors are securely connected.
Reset the machine: Turn the machine off and on again if it does not respond to commands.
Monitor Logs: Use a serial interface to monitor logs and identify potential problems.
Conclusion
This manual covers the main operations and functions of the washing machine. By following these instructions, you will be able to use a machine efficiently and solve possible problems. For more technical details, see the source code and documentation of the components used.
[MÍDIA=youtube] FYjHMPBRNg8[/MÍDIA]
I want to share my successfully completed project now with auto sensor using ADCIN of ESP8266 Follow the manual and diagram
B4R:
Sub Process_Globals
Public Serial1 As Serial
Private Timer1 As Timer
Private Timer2 As Timer
Private Timer3 As Timer
Private Timer4 As Timer
Private Timer5 As Timer
Private Timer6 As Timer
Private Timer7 As Timer
Private Timer8 As Timer
Private Timer9 As Timer
Private ssd As AdafruitSSD1306
Private ESPin As D1Pins
Private Relays As Int = 9
Private Registers(Relays) As Boolean
Private DS,STCP,SHCP As Pin
Private ssd As AdafruitSSD1306
Dim Ligar_Desligar As Pin
Dim Start As Pin
'Dim Set_Sensor As Pin
Dim EncoderPinA As Pin
Dim EncoderPinB As Pin
Private LastStateTime As Long = 0'Enconder
Private Counter As Int = 1 ' Enconder
Private lastButtonState As Boolean = True ' O estado anterior do botão, assume que começa não pressionado.
Private Sensor_nivel As Int
Private LastStateTime As Long = 0
Private Const NUM_LEITURAS_ADC As Int = 10 ' Número de leituras ADC para média
Private PinADC As Pin ' Declaração do pino ADC
Public AdcValue As Int
Dim Nivel_detectado As Boolean = False
' TEMP_1 CON 210 'MILE SEGUNDOS LAVAGEM NORMAL
' TEMP_2 CON 220 'MILE SEGUNDOS LAVAGEM PESADO
' TEMP_3 CON 200 'MILE SEGUNDOS LAVAGEM RAPIDO
Dim Lavangem_Normal As Int = 300 ' Delay Lavangem Normal
Dim Lavangem_Rapido As Int = 250 ' Delay Lavangem Rapido
Dim Lavangem_Dia_Dia As Int = 330 ' Delay Lavangem Dia a Dia
Dim Lavangem_Pesado As Int = 370 ' Delay Lavangem Pesado
Dim ENXAG As Int = 250 ' Delay Lavangem_Normal
End Sub
Private Sub AppStart
Serial1.Initialize(115200)
Log("AppStart")
PinADC.Initialize(PinADC.A0,PinADC.MODE_INPUT)' Inicializa o pino ADC (A0) do ESP8266
' Inicializa os pinos como entrada do enconder
EncoderPinA.Initialize(13, EncoderPinA.MODE_INPUT_PULLUP)'Inicializa o botão 1 com pull-up interno
EncoderPinB.Initialize(10, EncoderPinB.MODE_INPUT_PULLUP)'Inicializa o botão 2 com pull-up interno
EncoderPinA.AddListener("EncoderPinA_Changed")'Enconder de 3 pinos
Start.Initialize(ESPin.D3,Start.MODE_INPUT_PULLUP) 'Inicializa o botão 3 com pull-up interno
'Set_Sensor.Initialize(ESPin.D4,Set_Sensor.MODE_INPUT_PULLUP) 'Inicializa o botão 4 com pull-up interno
Ligar_Desligar.Initialize(ESPin.D4,Ligar_Desligar.MODE_INPUT_PULLUP) 'Inicializa o botão 3 com pull-up interno
Ligar_Desligar.AddListener("Liga_Desligar")'Ligar e Desligar Maquina
Timer1.Initialize("Menu",500) 'Menu de função aguardar 500 ms
Timer5.Initialize("Verificar_Sensor",1000)'Verificar Sensor de Nivel a Acada 1 ms
Timer5.Enabled=True'Ligar Timer1 Varredura
Timer2.Initialize("Star_lavagem_Normal",300)'Start de Lavagem Normal
Timer6.Initialize("Star_lavagem_Rapido",300)'Start de Lavagem Rpido
Timer7.Initialize("Star_lavagem_Dia_Dia",300)'Start de Lavagem Dia Dia
Timer8.Initialize("Star_lavagem_Pesado",300)'Start de Lavagem Pesado
Timer3.Initialize("Enchimento",300) 'Timer Start Valvola Enchimento
Timer4.Initialize("Molho_Longo",300) 'Timer Start Valvola Molho
Timer9.Initialize("Centrifugar",300) 'Timer Start Centrifugar
DS.Initialize(ESPin.D0,DS.MODE_OUTPUT) 'HS Pin 11 Serial In ESP D6 GPIO 12
STCP.Initialize(ESPin.D5,STCP.MODE_OUTPUT) 'HS Pin 12 RCK ESP D5 GPIO 14
SHCP.Initialize(ESPin.D6,SHCP.MODE_OUTPUT) 'HS Pin 14 Serial Clock ESP D7 GPIO 16
'Clear Register Values
ClearAllReg
ssd.InitializeI2C(ESPin.D6,0x3C) 'initialise SSD1306 0x78
AtualizarDisplay("MAQUINA", "DESLIGADA")
End Sub
' Método chamado quando o pino A do encoder muda de estado
Sub EncoderPinA_Changed (State As Boolean)
Dim StateTime As Long = Millis()
If StateTime - LastStateTime > 500 Then 'Execute apenas se o intervalo de disparo da mudança de estado for maior que 50 ms, ajuste para se adequar
If EncoderPinB.DigitalRead Then
Counter = Counter - 1
Else
Counter = Counter + 1
End If
Counter = Min(10, Max(1, Counter)) 'Limit the counter between 0 and 4
LastStateTime = StateTime 'Armazenar a hora do último estado
Log("Position: ", Counter)
End If
End Sub
Sub Menu'Ligar O Menu Timer 1
Select (Counter)
Case 1
Log("Nivel 1")
AtualizarDisplay("NIVEL 1 AG", "BAIXO")
If Start.DigitalRead = False Then ' Botão pressionado (leitura é LOW devido ao pull-up)
Sensor_nivel = 1' Incrementa o nível de 1 a 3
End If
Case 2
Log("Nivel 2")
AtualizarDisplay("NIVEL 2 AG", "MEDIO")
If Start.DigitalRead = False Then ' Botão pressionado (leitura é LOW devido ao pull-up)
Sensor_nivel = 2'Incrementa o nível de 1 a 3
End If
Case 3
Log("Nivel 3")
AtualizarDisplay("NIVEL 3 AG", "ALTO ")
If Start.DigitalRead = False Then ' Botão pressionado (leitura é LOW devido ao pull-up)
Sensor_nivel = 3' Incrementa o nível de 1 a 3
End If
Case 4
Log("Menu 1")
AtualizarDisplay("PROGRAMA:", "NORMAL")
If Start.DigitalRead = False Then ' Botão pressionado (leitura é LOW devido ao pull-up)
Timer2.Enabled = True 'Lavagem Normal
End If
Case 5
Log("Menu 2")
AtualizarDisplay("PROGRAMA:", "RAPIDO")
If Start.DigitalRead = False Then ' Botão pressionado (leitura é LOW devido ao pull-up)
Timer6.Enabled = True 'Lavangem Rapido
End If
Case 6
Log("Menu 3")
AtualizarDisplay("PROGRAMA:", "DIA A DIA")
If Start.DigitalRead = False Then ' Botão pressionado (leitura é LOW devido ao pull-up)
Timer8.Enabled = True ' Lavangem Pesado
End If
Case 7
Log("Menu 4")
AtualizarDisplay("PROGRAMA:", "PESADO")
If Start.DigitalRead = False Then ' Botão pressionado (leitura é LOW devido ao pull-up)
Timer7.Enabled = True' Lavangem Dia a Dia
End If
Case 8
Log("Menu 5")
AtualizarDisplay("PROGRAMA:", "ENXAGUAR")
If Start.DigitalRead = False Then ' Botão pressionado (leitura é LOW devido ao pull-up)
Timer3.Enabled = True'Start Enchimento
End If
Case 9
Log("Menu 6")
AtualizarDisplay("PROGRAMA:", "CENTRIFUGAR")
If Start.DigitalRead = False Then ' Botão pressionado (leitura é LOW devido ao pull-up)
Timer9.Enabled=True'Ligar Timer1 centrifugar
End If
Case 10
Log("Menu 7")
AtualizarDisplay("PROGRAMA:", "MOLHO LONGO")
If Start.DigitalRead = False Then ' Botão pressionado (leitura é LOW devido ao pull-up)
Timer4.Enabled = True 'Botao Start Molho Longo
End If
End Select
End Sub
' Método para atualizar o display
Sub AtualizarDisplay(Titulo As String, Valor As String)
ssd.ClearDisplay
ssd.GFX.SetCursor(2,0)
ssd.GFX.ConfigureText(2, ssd.WHITE, False)
ssd.GFX.DrawText(Titulo).DrawText(CRLF).DrawText(Valor).DrawText(CRLF)
ssd.Display
End Sub
Sub Verificar_Sensor
AdcValue = AverageADCRead(NUM_LEITURAS_ADC)
AdcValue = AdcValue / 10
Log("Sensor ", Sensor_nivel," ADCIN ", AdcValue)
Nivel_detectado = False
Select Case Sensor_nivel
Case 1
If AdcValue = 31 Then Nivel_detectado = True
Registers(6) = True'Ligar o Led endicador de nivel
WriteToReg
Case 2
If AdcValue = 16 Then Nivel_detectado = True
Registers(6) = True'Ligar o Led endicador de nivel
WriteToReg
Case 3
If AdcValue = 11 Then Nivel_detectado = True
Registers(6) = True'Ligar o Led endicador de nivel
WriteToReg
End Select
End Sub
'Função para fazer a média de várias leituras do ADC
Sub AverageADCRead(NumReadings As Int) As Int
Dim Total As Int = 0
For i = 1 To NumReadings
Total = Total + PinADC.AnalogRead
Delay(10)
Next
Return Total / NumReadings
End Sub
Sub Liga_Desligar (State As Boolean)
Dim currentState As Boolean = Ligar_Desligar.DigitalRead
If currentState = False And lastButtonState = True Then ' Detecta borda de descida (botão pressionado)
Timer1.Enabled = Not(Timer1.Enabled) ' Alterna o estado do timer
If Timer1.Enabled Then
AtualizarDisplay("MAQUINA", "LIGADA ")
Registers(5) = True'Ligar o Buzzer
WriteToReg
Delay(60)
Registers(5) = False'Ligar o Buzzer
WriteToReg
Delay(1000)
Timer5.Enabled=True 'Verificar Sensor de Nivel a Acada 1 ms
Timer1.Enabled=True 'Menu de função aguardar 500 ms
Else
AtualizarDisplay("MAQUINA", "DESLIGADA")
Timer1.Enabled = False 'Menu
Timer2.Enabled = False 'Lavagem Normal
Timer3.Enabled = False 'Enchimento
Timer5.Enabled = False 'Sensor
Timer6.Enabled = False 'Lavangem Rapido
Timer7.Enabled = False 'Lavangem Pesado
Timer8.Enabled = False 'Lavangem Dia a Dia
Timer9.Enabled = False 'Enchimento
Registers(1) = False 'Desligar Motor direito
Registers(6) = False 'Desligar o Led endicador de nival
Registers(3) = False 'Desligar Motor dreno
WriteToReg
End If
End If
lastButtonState = currentState ' Atualiza o estado anterior do botão
End Sub
Sub Star_lavagem_normal'Start de lavangem normal Timer 2
Timer1.Enabled = False'Desligar o Menu
AtualizarDisplay("LAVANDO:", "NORMAL")
Delay(300)
Registers(4) = True 'Abrir Valvola de Água
WriteToReg
If Nivel_detectado Then
Registers(4) = False'Fechar Valvola de água
Registers(6) = False'Ligar o Led endicador de nivel
WriteToReg
Lavando_Normal
End If
End Sub
Private Sub Lavando_Normal()
Timer2.Enabled = False'Desligar o Star_lavagem_normal
AtualizarDisplay("LAVANDO:", "AGUARDE....")
For i = 0 To 1499 '1499 Passos 50 minutos
Registers(1) = True 'Ligar Motor direito
WriteToReg
Delay (Lavangem_Normal) 'Delei de 2 Mile Segundos
Registers(1) = False 'Desligar Motor direito
WriteToReg
Delay (Lavangem_Normal) 'Delei de 2 Mile Segundos
Registers(2) = True 'Ligar Motor esquerdo
WriteToReg
Delay (Lavangem_Normal) 'Delei de 2 Mile Segundos
Registers(2) = False'Desligar Motor esquerdo
WriteToReg
Delay (Lavangem_Normal) 'Dele de 2 segundo
Next
Delay(60000)'PAUSA DE 1 SEGUNDO
For i = 0 To 1499 '1499 Passos 50 minutos
Registers(1) = True 'Ligar Motor direito
WriteToReg
Delay (Lavangem_Normal) 'Delei de 2 Mile Segundos
Registers(1) = False 'Desligar Motor direito
WriteToReg
Delay(Lavangem_Normal) 'Delei de 2 Mile Segundos
Registers(2) = True 'Ligar Motor esquerdo
WriteToReg
Delay (Lavangem_Normal) 'Delei de 2 Mile Segundos
Registers(2) = False 'Desligar Motor esquerdo
WriteToReg
Delay (Lavangem_Normal) 'Dele de 2 segundo
Next
Dreno_1
End Sub
Sub Star_lavagem_Rapido
Timer1.Enabled = False'Menu
AtualizarDisplay("LAVANDO:", "RAPIDO")
Delay(300)
Registers(4) = True 'Abrir Valvola de Água
WriteToReg
If Nivel_detectado Then
Registers(4) = False'Fechar Valvola de água
Registers(6) = False'Ligar o Led endicador de nival
WriteToReg
Lavando_Rapida
End If
End Sub
Sub Lavando_Rapida
Timer6.Enabled = False'Desligar o Star_lavagem_normal
AtualizarDisplay("LAVANDO:", "AGUARDE....")
For i = 0 To 449 'Passos 449 30 minutos
Registers(1) = True 'Ligar Motor direito
WriteToReg
Delay (Lavangem_Rapido) 'Delei de 2 Mile Segundos
Registers(1) = False 'Desligar Motor direito
WriteToReg
Delay (Lavangem_Rapido) 'Delei de 2 Mile Segundos
Registers(2) = True 'Ligar Motor esquerdo
WriteToReg
Delay (Lavangem_Rapido) 'Delei de 2 Mile Segundos
Registers(2) = False'Desligar Motor esquerdo
WriteToReg
Delay (Lavangem_Rapido) 'Dele de 2 segundo
Next
Delay(60000)'PAUSA DE 1 SEGUNDO
For i = 0 To 449 'Passos 449 30 minutos
Registers(1) = True 'Ligar Motor direito
WriteToReg
Delay (Lavangem_Rapido) 'Delei de 2 Mile Segundos
Registers(1) = False 'Desligar Motor direito
WriteToReg
Delay(Lavangem_Rapido) 'Delei de 2 Mile Segundos
Registers(2) = True 'Ligar Motor esquerdo
WriteToReg
Delay (Lavangem_Rapido) 'Delei de 2 Mile Segundos
Registers(2) = False 'Desligar Motor esquerdo
WriteToReg
Delay (Lavangem_Rapido) 'Dele de 2 segundo
Next
Dreno_1
End Sub
Sub Star_lavagem_Dia_Dia
Timer1.Enabled = False'Menu
AtualizarDisplay("LAVANDO:", "DIA A DIA")
Delay(300)
Registers(4) = True 'Abrir Valvola de Água
WriteToReg
If Nivel_detectado Then
Registers(4) = False'Fechar Valvola de água
Registers(6) = False'Ligar o Led endicador de nival
WriteToReg
Lavando_Dia_Dia
End If
End Sub
Sub Lavando_Dia_Dia
Timer7.Enabled = False'Desligar o Star_lavagem_normal
AtualizarDisplay("LAVANDO:", "AGUARDE....")
For i = 0 To 1349'1349 Passos + o - 30 minutos
Registers(1) = True 'Ligar Motor direito
WriteToReg
Delay (Lavangem_Dia_Dia) 'Delei de 2 Mile Segundos
Registers(1) = False 'Desligar Motor direito
WriteToReg
Delay (Lavangem_Dia_Dia) 'Delei de 2 Mile Segundos
Registers(2) = True 'Ligar Motor esquerdo
WriteToReg
Delay (Lavangem_Dia_Dia) 'Delei de 2 Mile Segundos
Registers(2) = False'Desligar Motor esquerdo
WriteToReg
Delay (Lavangem_Dia_Dia) 'Dele de 2 segundo
Next
Delay(60000)'PAUSA DE 1 SEGUNDO
For i = 0 To 1349'1349 Passos + o - 30 minutos
Registers(1) = True 'Ligar Motor direito
WriteToReg
Delay (Lavangem_Dia_Dia) 'Delei de 2 Mile Segundos
Registers(1) = False 'Desligar Motor direito
WriteToReg
Delay(Lavangem_Dia_Dia) 'Delei de 2 Mile Segundos
Registers(2) = True 'Ligar Motor esquerdo
WriteToReg
Delay (Lavangem_Dia_Dia) 'Delei de 2 Mile Segundos
Registers(2) = False'Desligar Motor esquerdo
WriteToReg
Delay (Lavangem_Dia_Dia) 'Dele de 2 segundo
Next
Dreno_1
End Sub
Sub Star_lavagem_Pesado
Timer1.Enabled = False'Menu
AtualizarDisplay("LAVANDO:", "PESADO")
Delay(300)
Registers(4) = True 'Abrir Valvola de Água
WriteToReg
If Nivel_detectado Then
Registers(4) = False'Fechar Valvola de água
Registers(6) = False'Ligar o Led endicador de nival
WriteToReg
Lavando_pesado
End If
End Sub
Sub Lavando_pesado
Timer8.Enabled = False'Desligar o Star_lavagem_normal
AtualizarDisplay("LAVANDO:", "AGUARDE....")
For i = 0 To 230 '230 Passoas
Registers(1) = True 'Ligar Motor direito
WriteToReg
Delay (Lavangem_Pesado) 'Delei de 2 Mile Segundos
Registers(1) = False 'Desligar Motor direito
WriteToReg
Delay (Lavangem_Pesado) 'Delei de 2 Mile Segundos
Registers(2) = True 'Ligar Motor esquerdo
WriteToReg
Delay (Lavangem_Pesado) 'Delei de 2 Mile Segundos
Registers(2) = False 'Desligar Motor esquerdo
WriteToReg
Delay (Lavangem_Pesado) 'Dele de 2 segundo
Delay(5000)
Next
Delay(60000)'PAUSA DE 1 SEGUNDO
For i = 0 To 230 '230 Passoas
Registers(1) = True 'Ligar Motor direito
WriteToReg
Delay (Lavangem_Pesado) 'Delei de 2 Mile Segundos
Registers(1) = False 'Desligar Motor direito
WriteToReg
Delay(Lavangem_Pesado) 'Delei de 2 Mile Segundos
Registers(2) = True 'Ligar Motor esquerdo
WriteToReg
Delay (Lavangem_Pesado) 'Delei de 2 Mile Segundos
Registers(2) = False 'Desligar Motor esquerdo
WriteToReg
Delay (Lavangem_Pesado) 'Dele de 2 segundo
Delay(5000)
Next
Dreno_1
End Sub
Private Sub Dreno_1()'DRENANDO A ÁGUA
Timer1.Enabled = False 'Desligar Menu
Timer2.Enabled = False 'Desligar Start Lavagem Normal
Timer3.Enabled = False 'DesligarEnchimento
Timer6.Enabled = False 'DesligarLavangem Rapido
Timer7.Enabled = False 'DesligarLavangem Pesado
Timer8.Enabled = False 'DesligarLavangem Dia a Dia
Timer9.Enabled = False 'DesligarLavangem Dia a Dia
AtualizarDisplay("DRENANDO 1", "AGUARDE....")
For i = 0 To 35 'Aguardar 4 Minuto
Registers(3) = True 'Ligar Motor Dreno
WriteToReg
Delay(6000)
Next
For i = 0 To 35 'Aguardar 2 Minuto
Registers(1) = True 'Ligar Motor Esquerdo
WriteToReg
Delay(6000)
Next
Registers(3) = False 'Desligar Motor Dreno
Registers(1) = False 'Desligar Motor esquerdo para exaguar
Registers(6) = False 'Desligar o Led endicador de nivel
WriteToReg
Timer3.Enabled = True'Start Enchimento
End Sub
Private Sub Enchimento() 'Enchendo de água
Timer1.Enabled = False 'Desligar Menu
Timer2.Enabled = False 'DesligarLavagem Normal
AtualizarDisplay("ENCHENDO", "AGUARDE....")
Delay(300)
Registers(4) = True 'Abrir Valvola de Água
WriteToReg
If Nivel_detectado Then
Registers(4) = False'Fechar Valvola de água
Registers(6) = False'Ligar o Led endicador de nivel
WriteToReg
Enxagua
End If
End Sub
Private Sub Enxagua()
Timer1.Enabled = False 'Desligar Menu
Timer2.Enabled = False 'Desligar Lavagem Normal
Timer3.Enabled = False 'Desligar Enchimento
AtualizarDisplay("ENXAGUAR", "AGUARDE....")
For i = 0 To 150 'Com 21 minutos
Registers(1) = True 'Ligar Motor direito
WriteToReg
Delay (ENXAG) 'Delei de 2 Mile Segundos
Registers(1) = False 'Desligar Motor direito
WriteToReg
Delay (ENXAG) 'Delei de 2 Mile Segundos
Registers(2) = True 'Ligar Motor esquerdo
WriteToReg
Delay (ENXAG) 'Delei de 2 Mile Segundos
Registers(2) = False 'Desligar Motor esquerdo
WriteToReg
Delay (ENXAG) 'Dele de 2 segundo
Next
Registers(8)= True 'Abrir Valvola 2 do Amaciante
WriteToReg
Delay(60000) 'PAUSA DE 1 SEGUNDO
Registers(8) = False 'Desligar Valvola 2 do Amaciante
WriteToReg
For i = 0 To 150 'Com 21 minutos
Registers(1) = True 'Ligar Motor direito
WriteToReg
Delay (ENXAG) 'Delei de 2 Mile Segundos
Registers(1) = False 'Desligar Motor direito
WriteToReg
Delay(ENXAG) 'Delei de 2 Mile Segundos
Registers(2) = True 'Ligar Motor esquerdo
WriteToReg
Delay (ENXAG) 'Delei de 2 Mile Segundos
Registers(2) = False 'Desligar Motor esquerdo
WriteToReg
Delay (ENXAG) 'Dele de 2 segundo
Next
Registers(3) = False 'Desligar Motor do dreno Esperar água baixar
Registers(1) = False 'Desligar Motor esquerdo para exaguar
WriteToReg
Dreno_2
End Sub
Private Sub Dreno_2()
Timer1.Enabled = False 'Desligar O Menu
Timer2.Enabled = False 'Desligar Lavagem Normal
Timer3.Enabled = False 'Desligar Enchimento
Timer6.Enabled = False 'Desligar Lavangem Rapido
Timer7.Enabled = False 'Desligar Lavangem Pesado
Timer8.Enabled = False 'Desligar Lavangem Dia a Dia
Timer9.Enabled = False 'Desligar Centrifugar
AtualizarDisplay("DRENANDO 2", "AGUARDE....")
For i = 0 To 35 '1 iterações (representando 300 segundos, ou 5 minutos)
Registers(3) = True 'Ligar Motor do dreno Esperar água baixar
WriteToReg
Delay(6000)
Next
For i = 0 To 35 'Aguardar 1 Minuto
Registers(1) = True 'Ligar Motor Esquerdo
WriteToReg
Delay(6000)
Next
Registers(3) = False 'Desligar Motor do dreno
Registers(1) = False 'Desligar Motor esquerdo
WriteToReg
Timer9.Enabled=True 'Ligar Timer9 centrifugar
End Sub
Sub Centrifugar
Timer1.Enabled = False 'Desligar Menu
Timer2.Enabled = False 'Desligar Lavagem Normal
Timer3.Enabled = False 'Desligar Enchimento
Timer6.Enabled = False 'Desligar Lavangem Rapido
Timer7.Enabled = False 'Desligar Lavangem Pesado
Timer8.Enabled = False 'Desligar Lavangem Dia a Dia
AtualizarDisplay("CENTRIGUGAR", "AGUARDE....")
For i = 0 To 40 'Com 11 minutos
Registers(3) = True 'Ligar Motor do dreno Esperar água baixar
WriteToReg
Delay(6000)
Next
For i = 0 To 80 'Com 11 minutos
Registers(1) = True 'Ligar Motor esquerdo para exaguar
Registers(6) = False'Ligar o Led endicador de nival
WriteToReg
Delay(6000)
Next
Registers(4) = False 'Desligar Valvola
Registers(1) = False 'Desligar Motor direito
Registers(2) = False 'Desligar Motor Esquenrdo
Registers(3) = False 'Desligar Motor dreno
Registers(6) = True 'Ligar o Led endicador de nival
WriteToReg
For I = 0 To 5 'LIGAR O BUZZER DEPOIS DE TERMINA A LAVANGEM
Registers(5) = True 'Ligar O Buzzer
WriteToReg
Delay(100)
Registers(5) = False'Desligar O Buzzer
WriteToReg
Delay(100)
Next
AtualizarDisplay("TERMINANDO", "A TE LOGO")
Delay(6000) 'Aguandar 1 minito
Timer2.Enabled = False 'Desligar Lavangem normal
Timer3.Enabled = False 'Desligar Enchimento
Timer4.Enabled = False 'Desligar Molho
Timer6.Enabled = False 'Desligar Lavangem Rapido
Timer7.Enabled = False 'Desligar Lavangem Dia a Dia
Timer8.Enabled = False 'Desligar Lavagem Pesado
Timer9.Enabled = False 'Desligar Centrifugar
Timer1.Enabled = True 'Voltar para o menu
End Sub
Private Sub Molho_Longo()' Botão Start Valvola Molho
Timer1.Enabled = False 'Menu
Timer2.Enabled = False 'Lavagem Normal
Timer3.Enabled = False 'Enchimento
Timer6.Enabled = False 'Lavangem Rapido
Timer7.Enabled = False 'Lavangem Pesado
Timer8.Enabled = False 'Lavangem Dia a Dia
Timer9.Enabled = False 'Lavangem Dia a Dia
AtualizarDisplay("MOLHO LONGO", "AGUARDE....")
Delay(300)
Registers(4) = True 'Abrir Valvola de Água
WriteToReg
If Nivel_detectado Then
Registers(4) = False 'Fechar Valvola de água
Registers(6) = False 'Ligar o Led endicador de nival
WriteToReg
MOLHO
End If
End Sub
Private Sub MOLHO()
For i = 0 To 150 '150 PASSOS
Registers(1) = True 'Ligar Motor direito
WriteToReg
Delay (Lavangem_Normal) 'Delei de 2 Mile Segundos
Registers(1) = False 'Desligar Motor direito
WriteToReg
Delay (Lavangem_Normal) 'Delei de 2 Mile Segundos
Registers(2) = True 'Ligar Motor esquerdo
WriteToReg
Delay (Lavangem_Normal) 'Delei de 2 Mile Segundos
Registers(2) = False 'Desligar Motor esquerdo
WriteToReg
Delay (Lavangem_Normal) 'Dele de 2 segundo
Next
Delay(10000) 'PAUSA DE 1 SEGUNDO
For i = 0 To 150 '150 PASSOS
Registers(1) = True 'Ligar Motor direito
WriteToReg
Delay (Lavangem_Normal) 'Delei de 2 Mile Segundos
Registers(1) = False 'Desligar Motor direito
WriteToReg
Delay(Lavangem_Normal) 'Delei de 2 Mile Segundos
Registers(2) = True 'Ligar Motor esquerdo
WriteToReg
Delay (Lavangem_Normal) 'Delei de 2 Mile Segundos
Registers(2) = False 'Desligar Motor esquerdo
WriteToReg
Delay (Lavangem_Normal) 'Dele de 2 segundo
Next
For I = 0 To 6000
Delay(5000)
Next
Timer4.Enabled = False 'Desligar funcão Molho
Lavando_Normal
End Sub
'Write To Registers
Private Sub WriteToReg()
STCP.DigitalWrite(False)
Dim i As Int = 0
Do While i <= Relays - 1
SHCP.DigitalWrite(False)
DS.DigitalWrite(Registers(i))
SHCP.DigitalWrite(True)
i = i + 1
Loop
STCP.DigitalWrite(True)
End Sub
'Clear All Registers
Private Sub ClearAllReg()
Dim i As Int = Relays - 1
Do While i >= 0
Registers(i) = False 'True = NO
i = i - 1
WriteToReg
Loop
End Sub
Basic Operation
Initialization
Turn on the machine:
Press the on/off button. The machine will start and the display will show "MACHINE ON".
The sensor check and menu timers will activate.
Menu Navigation
Using the Encoder:
Rotate the encoder to navigate through the menu options.
Menu options include water level selection and wash program.
Water Level Selection:
Level 1: "LEVEL 1 AG" - Low
Level 2: "LEVEL 2 AG" - Medium
Level 3: "LEVEL 3 AG" - High
Wash Program Selection:
Normal Program: "PROGRAM: NORMAL"
Quick Program: "PROGRAM: FAST"
Day by Day Program: "PROGRAM: DAY BY DAY"
Heavy Program: "PROGRAM: HEAVY"
Rinse: "PROGRAM: RINSE"
Spin: "PROGRAM: SPIN"
Long Sauce: "PROGRAM: LONG SAUCE"
Running a Wash Program
Start Normal Wash:
Select "PROGRAM: NORMAL" and press the Start button.
The water valve will open until the desired water level is reached.
The motor will begin to operate alternating between left and right movements.
Start Quick Wash:
Select "PROGRAM: FAST" and press the Start button.
Similar to the normal program, but with reduced operating times.
Start Day by Day Wash:
Select "PROGRAM: DAY BY DAY" and press the Start button.
Similar to the normal program, but with operating times adjusted for everyday clothes.
Start Heavy Wash:
Select "PROGRAM: HEAVY" and press the Start button.
Similar to the normal program, but with longer operating times and additional pauses.
Other Functions
Rinse off:
Select "PROGRAM: RINSE" and press the Start button.
The machine will perform a fill and drain cycle to rinse the clothes.
Centrifuge:
Select "PROGRAM: SPIN" and press the Start button.
The machine will spin the clothes to remove excess water.
Long Sauce:
Select "PROGRAM: LONG SAUCE" and press the Start button.
The machine will soak clothes for an extended period of time before starting to wash.
Technical details
Timer Functions
Timer1 (Menu): Controls menu navigation and selection.
Timer2 (Star_lavagem_Normal): Starts the normal washing program.
Timer3 (Filling): Control the filling of the machine.
Timer4 (Long_Sauce): Controls the long sauce.
Timer5 (Check_Sensor): Checks the water level.
Timer6 (Star_lavagem_Rapido): Starts the quick wash program.
Timer7 (Star_lavagem_Dia_Dia): Starts the washing program day by day.
Timer8 (Star_lavagem_Pesado): Starts the heavy wash program.
Timer9 (Spin): Starts centrifugation.
Pins and Relays
DS, STCP, SHCP: Pins for controlling the shift registers.
On_ Off, Start, EncoderPinA, EncoderPinB: Pins for input control (buttons and encoder).
Relays: Control water valves, motors and other actuators.
Display control
UpdateDisplay: Method to update the information displayed on the SSD1306 screen.
Maintenance and Troubleshooting
Check connections: Make sure all pins and connectors are securely connected.
Reset the machine: Turn the machine off and on again if it does not respond to commands.
Monitor Logs: Use a serial interface to monitor logs and identify potential problems.
Conclusion
This manual covers the main operations and functions of the washing machine. By following these instructions, you will be able to use a machine efficiently and solve possible problems. For more technical details, see the source code and documentation of the components used.
[MÍDIA=youtube] FYjHMPBRNg8[/MÍDIA]
Attachments
Last edited: