Sari la conținut
ELFORUM - Forumul electronistilor

BASCOM


yo9hnf

Postări Recomandate

Comanda

$sim
se foloseste doar pentru simulare? sau afecteaza in oarecare masura si montajul in sine?
Doar pentru simulare sub BASCOM. Pentru simulare in alt mediu da erori.
Link spre comentariu

Multumesc...nu ma interesa in alte medii, (limbaje de programare) decat in realizarea practica a montajului.

Simulare in alt mediu insemna Proteus sau un alt program care permite simularea functionarii uC si nu programare in alte medii de programare.
Link spre comentariu

Aveti idee cum as putea sa "insumez" doua variabile pentru a le folosi impreuna intr-un CASE ?

 

Ceva in genul acesta as dori :

 

Select Case senzor1 and senzor2

Case....

End select

Link spre comentariu

Aveti idee cum as putea sa "insumez" doua variabile pentru a le folosi impreuna intr-un CASE ?

 

Ceva in genul acesta as dori :

 

Select Case senzor1 and senzor2

Case....

End select

BASCOM nu accepta astfel de comenzi.

Incearca:

IF senzor1=1 AND senzor2 = 1 Then    ' (sau 0, functie de cum reactioneaza senzorii tai la activare)codul tau  ' (cum vrei sa se comporte programul)end if
Link spre comentariu

Multumesc nico_2010 ! Nu stiu daca ma ajuta exact functia IF....Senzorii sunt doi termistori NTC ale calor valori (decimale, pe care le folosesc eu) se invart intre 800 si 150 (in mare). Desi ambii termistori sunt amplasati pe/in obiecte diferite, ele stau in acelasi mediu care trebuie racit....ma gandeam sa adun valorile senzorilor si apoi sa folosesc CASE SELECT (de ex daca am peste S1+S2 > 1100 sa nu-mi faca nimic programul, Case S1+S2 700 to 900 : ventilator 150 etc). O sa incerc si asa sa vad cum reactioneaza.

Link spre comentariu

Nu am reusit sa aduc cele doua variabile nici cu var(x) sau str(x).Acum incerc cu IF senz1>ceva or senz2>ceva , dar imi executa rutina numai daca ambele variante indeplinesc conditia. Cred ca normal era sa-mi execute si daca unul (oricare) dintre cei doi senzori indeplineste conditia.

Link spre comentariu

Am folosit ceva asemanator intr-o sursa de alimentare, doi termistori, unul pe radiator tranzistori altul pe traf alimentare, fiecare cu ventilatorul sau, fiecare termistor supreavegheaza temperatura in parte si porneste ventilatorul cu turatie variabila incepind de la 32 grade pina la 55 grade unde are turatie maxima. La 70 grade intra in stop termic.

'************ Configurare porturi si variabile pentru ventilator traf (th1)'Config Portb.1 = OutputOutpwm1 Alias Pinb.1Config Outpwm1 = OutputDim Valadc1 As WordDim Grade1 As WordDim Constgrade1 As WordConstgrade1 = 535Dim Calcpwm1 As WordDim Pwm_1 As Word'************ Configurare porturi si variabile pentru ventilator radiator (th2)'Config Portb.2 = OutputOutpwm2 Alias Pinb.2Config Outpwm2 = OutputDim Valadc2 As WordDim Grade2 As WordDim Calcpwm2 As WordDim Pwm_2 As Word.....................'************** ventilator traf (th1)Ventilator:Valadc1 = Getadc(0)                                         'termistor trafGrade1 = Constgrade1 - Valadc1Grade1 = Grade1 / 5Pwm_1 = Grade1 - 32Pwm_1 = Pwm_1 * 8Pwm_1 = 220 - Pwm_1If Grade1 < 32 ThenConfig Outpwm1 = InputElseConfig Outpwm1 = OutputEnd IfIf Grade1 > 55 Then Pwm_1 = 0Pwm1a = Pwm_1'************** ventilator radiator (th2)Valadc2 = Getadc(1)                                         'termistor radiatorGrade2 = Constgrade1 - Valadc2Grade2 = Grade2 / 5Pwm_2 = Grade2 - 32Pwm_2 = Pwm_2 * 8Pwm_2 = 220 - Pwm_2If Grade2 < 32 ThenConfig Outpwm2 = InputElseConfig Outpwm2 = OutputEnd IfIf Grade2 > 55 Then Pwm_2 = 0Pwm1b = Pwm_2If Grade2 > 70 Or Grade1 > 70 Then Gosub Stoptermic

Poate te ajuta ca si idee...

Link spre comentariu

Acum incerc cu IF senz1>ceva or senz2>ceva , dar imi executa rutina numai daca ambele variante indeplinesc conditia. Cred ca normal era sa-mi execute si daca unul (oricare) dintre cei doi senzori indeplineste conditia.

Si mie mi se pare ca if-ul tau e corect. Singura problema la care ma pot gandi in cazul asta e ordinea de evaluare a expresiei. De aia, de cate ori am dubii legate de ordinea in care compilatorul imi va evalua expresiile, pun paranteze.Adica
if((senz1>ceva) or (senz2>ceva))
Asa sunt sigur ca evaluarea e cum vreau eu, nu
if(((senz1>ceva) or senz2) > ceva)
de exemplu.PS Mi-e greu de sa inteleg de ce cei care au probleme cu cate o bucata de cod nu posteaza si bucata de cod care nu merge, ca sa fie mai usor de discutat.
Link spre comentariu

Am incercat si cu doua functii if pentru fiecare senzor in parte dar tot nu merge decat daca sunt incalziti ambii senzori.

Am incercat si cu paranteze acum, dar imi da eroare de sintaxa :

 Sub Termostat:      Senzor1 = Getadc(2)      Senzor2 = Getadc(3)      If ((senzor1 > 780) Or (senzor2 > 780)) Then         Compare1a = 255      Else         Compare1a = 0      End If      Locate 1 , 1      Lcd "senzor 1=" ; Senzor1      Locate 2 , 1      Lcd "senzor 2=" ; Senzor2   End Sub

 

REVIN :

 

Acesta functioneaza doar pentru senzor2:

 

Sub Termostat:      Senzor1 = Getadc(2)      Senzor2 = Getadc(3)      If Senzor1 > 750 Then         Compare1a = 255      Else         Compare1a = 0      End If      If Senzor2 > 750 Then         Compare1a = 255      Else         Compare1a = 0      End If      Locate 1 , 1      Lcd "senzor 1=" ; Senzor1      Locate 2 , 1      Lcd "senzor 2=" ; Senzor2   End Sub
Link spre comentariu

Am incercat si cu paranteze acum, dar imi da eroare de sintaxa :

      If ((senzor1 > 780) Or (senzor2 > 780)) Then
In visual basic expresia de mai sus (ma rog, una echivalenta) functioneaza OK.N-am folosit niciodata Bascom, da' as incerca fara parantezele exterioare:
If (senzor1 > 780) Or (senzor2 > 780) Then
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări