Page 1 of 1

bascom arduino - presepio

PostPosted: 05 Sep 2012, 11:25
by massibal
salve a tutti...e grazie per le risposte!
rispondo :
Hai un condensatore di disaccoppiamento vicino al display? NO
- Sei su breadboard? SI
- Hai un oscilloscopio per fare delle verifiche? NO
- L'alimentazione è sufficiente, l'alimentatore è ben dimensionato? SI
- Puoi pubblicare lo schema del circuito? NO

sotto riporto però il file del programmino.... chiedo scusa in anticipo per eventuali castronerie .. !

grazie e buon week end

papà Massi



' **********************************************************************
' * File: presepemax_2012.bas - Rel. x.n del 04.05.12 by Max B:
' * Scheda: ARDUINO UNO con Bascom AVR
' * PROVE Funz.con sheda ARDUINO e BascomAVR
' **********************************************************************
'
'****************** Direttive del compilatore **************************
'
$regfile = "m328pdef.dat"
$crystal = 16000000
$baud = 19200
Config Clockdiv = 2

Config Pind.3 = Input ' echo
Config Portd.2 = Output ' trigger
Config Portb = Output
Config Portd.7 = Output
Config Portd.4 = Output

'$sim
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
Config Timer0 = Pwm , Prescale = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
Config Timer2 = Pwm , Prescale = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
Config Debounce = 50
'Config Adc = Single , Prescaler = Auto , Reference = Internal

'****************** Dichiarazione delle costanti ***********************
'
Const Mas = " PRESEPE 2012 "
'
'****************** Dichiarazione delle variabili **********************
'
Dim N As Byte , I As Byte , A As Byte
Dim Var As String * 1
Dim Su As Byte , Giu As Byte
Dim Tempo As Word
Dim Dist As Word
'
'************************* Programma main ******************************
'
Disable Interrupts 'Disabilita interrupt
Cls : Cursor Off 'Inizializza LCD
Lcd Mas
Print Mas
Waitms 2500
Cls
Lcd "Test comandi ON"
Print "Test comandi ON"
For N = 0 To 7
Portb = 2 ^ N
Waitms 20
Next
Set Portd.7
Waitms 50
Reset Portd.7
Waitms 50
Set Portd.4
Waitms 50
Reset Portd.4
Waitms 50
Reset Portb.0
Pwm2a = 0
Waitms 50
Pwm2a = 255
Cls
Lcd "Test comandi OFF"
Print "Test comandi OFF"
Waitms 200

Avvio:
Cls
Print "Avvia il Presepio "
Upperline
Lcd " Avvia il "
Lowerline
Lcd " presepio "
Via:
Waitms 20
' Portd.2 = 1

Pulseout Portd , 2 , 400
'Portd.2 = 0

Pulsein Tempo , Pind , 3 , 1
Tempo = Tempo * 10
Dist = Tempo / 29
If Dist < 4 Then
Gosub Programma
Elseif Dist >= 4 Then
Goto Via
Waitms 10
Cls
End If
Programma:
Print "PROGRAMMA_CARLO_ON"
Cls
Lcd "PROGRAM_CARLO_ON"
For A = 1 To 16
Shiftlcd Right
Waitms 300
Next
For A = 1 To 16
Shiftlcd Left
Waitms 300
Next

For Su = 255 To 0 Step -1
Pwm2a = Su 'accende gradatamente LUCI_GIORNO
If Su = 150 Then Set Portb.2 ' fontana UP
If Su = 120 Then Set Portd.7 ' pastori (treno)-nonna UP
If Su = 100 Then Set Portb.5 ' panni stesi - UP
Waitms 20
Next
Waitms 1000
For Giu = 0 To 255
Pwm2a = Giu 'spegne gradatamente LUCI_GIORNO
If Giu = 50 Then Reset Portd.7 ' pastori (treno)-nonna DOWN
If Giu = 80 Then Reset Portb.5 'panni stesi - DOWN
If Giu = 120 Then Reset Portb.2 'fontana DOWN
If Giu = 150 Then Set Portb.0 'fuoco UP
Waitms 20
Next
Portb.1 = 1 'stelle UP
Waitms 500
Lowerline : Lcd "STELLE ACCESE"
Set Portb.4 'luci case UP
Waitms 500
Lowerline : Lcd "LUCI CASE ACCESE"
Set Portd.4 ' luce notte UP
Waitms 500
Lowerline : Lcd "LUCE NOTTE ACCESE"
Reset Portb.0 'fuoco DOWN
Waitms 500
Lowerline : Lcd " FUOCO SPENTO"
Reset Portb.4 'luci case DOWN
Waitms 500
Lowerline : Lcd "LUCI CASE SPENTE"
Reset Portb.1 'stelle DOWN
Waitms 500
Lowerline : Lcd "STELLE SPENTE"
Reset Portd.4 ' luce notte DOWN
Lowerline : Lcd "LUCI NOTTE SPENTE"
Cls : Lcd "PROGRAMMA CARLO"
Lowerline : Lcd " CONCLUSO "
Print "PROGRAMMA_CARLO_CONCLUSO"
Waitms 1000
Goto Avvio
End

Re: bascom arduino - presepio

PostPosted: 05 Sep 2012, 11:30
by flz47655
Ciao e benvenuto,
Alcune domande che mi vengono in mente (sempre che non sia il sw):
- Hai un condensatore di disaccoppiamento vicino al display?
- Sei su breadboard?
- Hai un oscilloscopio per fare delle verifiche?
- L'alimentazione è sufficiente, l'alimentatore è ben dimensionato?
- Puoi pubblicare lo schema del circuito?

Ciao

Re: bascom arduino - presepio

PostPosted: 05 Sep 2012, 11:49
by deluca
ciao massibal
per avere un supporto concreto dovresti allegare il sorgente così ci togliamo il bubbio sul codice, ok?

eventualmente cercheremo altrove.
ciao

Re: bascom arduino - presepio

PostPosted: 10 Sep 2012, 11:25
by massibal
massibal wrote:salve a tutti...e grazie per le risposte!
rispondo :
Hai un condensatore di disaccoppiamento vicino al display? NO
- Sei su breadboard? SI
- Hai un oscilloscopio per fare delle verifiche? NO
- L'alimentazione è sufficiente, l'alimentatore è ben dimensionato? SI
- Puoi pubblicare lo schema del circuito? NO

sotto riporto però il file del programmino.... chiedo scusa in anticipo per eventuali castronerie .. !

grazie e buon week end

papà Massi



' **********************************************************************
' * File: presepemax_2012.bas - Rel. x.n del 04.05.12 by Max B:
' * Scheda: ARDUINO UNO con Bascom AVR
' * PROVE Funz.con sheda ARDUINO e BascomAVR
' **********************************************************************
'
'****************** Direttive del compilatore **************************
'
$regfile = "m328pdef.dat"
$crystal = 16000000
$baud = 19200
Config Clockdiv = 2

Config Pind.3 = Input ' echo
Config Portd.2 = Output ' trigger
Config Portb = Output
Config Portd.7 = Output
Config Portd.4 = Output

'$sim
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
Config Timer0 = Pwm , Prescale = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
Config Timer2 = Pwm , Prescale = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
Config Debounce = 50
'Config Adc = Single , Prescaler = Auto , Reference = Internal

'****************** Dichiarazione delle costanti ***********************
'
Const Mas = " PRESEPE 2012 "
'
'****************** Dichiarazione delle variabili **********************
'
Dim N As Byte , I As Byte , A As Byte
Dim Var As String * 1
Dim Su As Byte , Giu As Byte
Dim Tempo As Word
Dim Dist As Word
'
'************************* Programma main ******************************
'
Disable Interrupts 'Disabilita interrupt
Cls : Cursor Off 'Inizializza LCD
Lcd Mas
Print Mas
Waitms 2500
Cls
Lcd "Test comandi ON"
Print "Test comandi ON"
For N = 0 To 7
Portb = 2 ^ N
Waitms 20
Next
Set Portd.7
Waitms 50
Reset Portd.7
Waitms 50
Set Portd.4
Waitms 50
Reset Portd.4
Waitms 50
Reset Portb.0
Pwm2a = 0
Waitms 50
Pwm2a = 255
Cls
Lcd "Test comandi OFF"
Print "Test comandi OFF"
Waitms 200

Avvio:
Cls
Print "Avvia il Presepio "
Upperline
Lcd " Avvia il "
Lowerline
Lcd " presepio "
Via:
Waitms 20
' Portd.2 = 1

Pulseout Portd , 2 , 400
'Portd.2 = 0

Pulsein Tempo , Pind , 3 , 1
Tempo = Tempo * 10
Dist = Tempo / 29
If Dist < 4 Then
Gosub Programma
Elseif Dist >= 4 Then
Goto Via
Waitms 10
Cls
End If
Programma:
Print "PROGRAMMA_CARLO_ON"
Cls
Lcd "PROGRAM_CARLO_ON"
For A = 1 To 16
Shiftlcd Right
Waitms 300
Next
For A = 1 To 16
Shiftlcd Left
Waitms 300
Next

For Su = 255 To 0 Step -1
Pwm2a = Su 'accende gradatamente LUCI_GIORNO
If Su = 150 Then Set Portb.2 ' fontana UP
If Su = 120 Then Set Portd.7 ' pastori (treno)-nonna UP
If Su = 100 Then Set Portb.5 ' panni stesi - UP
Waitms 20
Next
Waitms 1000
For Giu = 0 To 255
Pwm2a = Giu 'spegne gradatamente LUCI_GIORNO
If Giu = 50 Then Reset Portd.7 ' pastori (treno)-nonna DOWN
If Giu = 80 Then Reset Portb.5 'panni stesi - DOWN
If Giu = 120 Then Reset Portb.2 'fontana DOWN
If Giu = 150 Then Set Portb.0 'fuoco UP
Waitms 20
Next
Portb.1 = 1 'stelle UP
Waitms 500
Lowerline : Lcd "STELLE ACCESE"
Set Portb.4 'luci case UP
Waitms 500
Lowerline : Lcd "LUCI CASE ACCESE"
Set Portd.4 ' luce notte UP
Waitms 500
Lowerline : Lcd "LUCE NOTTE ACCESE"
Reset Portb.0 'fuoco DOWN
Waitms 500
Lowerline : Lcd " FUOCO SPENTO"
Reset Portb.4 'luci case DOWN
Waitms 500
Lowerline : Lcd "LUCI CASE SPENTE"
Reset Portb.1 'stelle DOWN
Waitms 500
Lowerline : Lcd "STELLE SPENTE"
Reset Portd.4 ' luce notte DOWN
Lowerline : Lcd "LUCI NOTTE SPENTE"
Cls : Lcd "PROGRAMMA CARLO"
Lowerline : Lcd " CONCLUSO "
Print "PROGRAMMA_CARLO_CONCLUSO"
Waitms 1000
Goto Avvio
End

Re: bascom arduino - presepio

PostPosted: 10 Sep 2012, 13:26
by deluca
scusa massibal, ma non riesco a trovare il tuo topic iniziale dove spiegavi i problemi che avevi incontrato con questo circuito.
potresti gentilmente rimembrare cosa ti accadeva ?

grazie

un consiglio:
quando vai con la stesura del sorgente prova a dare una formattazione strutturale....
ti aiuterà e ci aiuterà molto a interpretare prima il codice. (la prossima volta) :)

PS. Come sensore distanza stai impiegando SRF quale modello?

ciao

Re: bascom arduino - presepio

PostPosted: 11 Sep 2012, 08:00
by massibal
Buongiorno ,
il modello del sensore è SFR05.

il problema è che volevo utilizzare il sensore come "interruttore" per fare partire il ciclo del presepe con un movimento della mano.

fintanto che non ho installato un display lcd 16x2 andava tutto bene ora che c'è anche il lcd il sensore parte a caso e non so come fare .

se cìè una soluzione software o se devo modificare hardware!!

grazie mille

cordiali saluti

PS mi scuso pe l'ignoranza ma mi potresti fare un esempio su cosa si intende per formattazione strutturale?

massi

Re: bascom arduino - presepio

PostPosted: 11 Sep 2012, 08:16
by deluca
intanto inizia con il sostituire :

Pulseout Portd , 2 , 400
Pulsein Tempo , Pind , 3 , 1

con

Code: Select all
Pulseout Portd , 2 , 20         'genera impulso trigger 20uSec
Bitwait Pind.3 , Reset           'aspetta che il pin cambi di stato
Pulsein Tempo , Pind , 3 , 1   'misura il periodo dell'impulso echo


es: formattazione strutturata del tuo codice

Code: Select all
Via:
Waitms 20
 ' Portd.2 = 1

Pulseout Portd , 2 , 400
 'Portd.2 = 0

Pulsein Tempo , Pind , 3 , 1
   Tempo = Tempo * 10
   Dist = Tempo / 29

   If Dist < 4 Then
      Gosub Programma
   Elseif Dist >= 4 Then
      Goto Via
      Waitms 10
      Cls
   End If
'-------------------------------------------------------------------------------
Programma:
Print "PROGRAMMA_CARLO_ON"
Cls
 Lcd "PROGRAM_CARLO_ON"
   For A = 1 To 16
      Shiftlcd Right
      Waitms 300
   Next
   For A = 1 To 16
         Shiftlcd Left
         Waitms 300
   Next

 For Su = 255 To 0 Step -1
   Pwm2a = Su                                               'accende gradatamente LUCI_GIORNO
   If Su = 150 Then Set Portb.2                             ' fontana UP
   If Su = 120 Then Set Portd.7                             ' pastori (treno)-nonna UP
   If Su = 100 Then Set Portb.5                             ' panni stesi - UP
   Waitms 20
 Next


PS. modificando la external sub [_PULSE_IN] della libreria "mcs.lib" potresti incrementare notevolmente la risoluzione di TEMPO.
ma se non hai abbastanza dimestichezza con l'assembly meglio lasciar perdere.

ciao

Re: bascom arduino - presepio

PostPosted: 13 Sep 2012, 15:49
by massibal
buonasera,
ti ringrazio molto per l'aiuto..

quando torno a casa mi metto al lavoro!

buonaserata.

massibal

Re: bascom arduino - presepio

PostPosted: 19 Sep 2012, 17:58
by massibal
grazie mille ...

tutto perfetto !

procedo con il mio progetto ... adesso sono alle prese con il relè del trenino!

ciao a tutti
massibal

Re: bascom arduino - presepio

PostPosted: 19 Sep 2012, 20:43
by omega25
massibal,
cosa intendi quando dici "tutto perfetto !" con l'esclamazione?
ho capito che il tuo programma adesso va bene.....

potresti spiegarci quali modifiche sono state apportate?

Re: bascom arduino - presepio

PostPosted: 20 Sep 2012, 09:11
by massibal
Si scusate ,
il mio problema era il sensore ad ultrasuoni, dopo aver modificato le istruzioni, come da indicazione del "grande" (come dice mio filgio e io condivido anche se utilizzerei un aggettivo più appropriato) deluca, adesso il sensore fa la funzione che deve fare cioè da interruttore per avvirar il ciclo del presepio.

saluti a tutti
massibal