433Mhz Zender ontvanger (PicBasic)

Hoi mede Co'ers,

Ben nu alle een 2 dagen aan het rommelen met 433Mhz zendertjes die Niels op SK verkoopt. Het is de bedoeling dat dit een aantal buiten lapen haat bedienen in de tuin dit omdat er verkeerde kabels leggen en ze op verschillen de groepen zitten. Ik krijg ze alleen maar niet aan de praat ik heb de zoekmachine van deze site al geprobeerd, veel wordt er verwezen naar deze post. Toch krijg ik dit niet werkend. Wat doe ik verkeert?

Hier onder nog even mijn volledige zender code: (Om te testen)
De ontvanger code heb ik zo overgenomen.

pic basic code:


DEVICE 16F628A                 	                      ; Gebruik een 16F628A type
CONFIG WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF, HS_OSC  ; INTRC_OSC_NOCLKOUT verwijderd
XTAL 4
ALL_DIGITAL TRUE              	   		       ; Alle ingangen digitaal

DIM Teller   AS BYTE

SYMBOL SerieelUit = PORTA.1
SYMBOL Snelheid   = 17197

;        76543210
PORTA = %00000000             ;PORTA poorten LAAG
PORTB = %00000000             ;PORTB poorten laag
TRISA = %11111101             ;A.1 is uitgang voor de SEROUT
TRISB = %11111111             ;Alles is een ingang

DELAYMS 1000

WHILE 1 = 1
SEROUT SerieelUit,Snelheid, ["AAAAAAAA", "P", "W", Teller, 20]
DELAYMS 500 
INC Teller
IF Teller = 250 THEN
  CLEAR Teller
ENDIF
WEND

END

Wie heeft er een idee?

www.tinuselectronics.nl Because DIY Electronics Matters!!!!
marcob

Golden Member

Wat werkt er niet? Wat ik tijdens het testen heb gedaan, is de data doorsturen naar de COM poort van de PC. Zie je welke data er wel binnen komt.

Een bekend probleem is dat de ontvanger en zender te dicht bij elkaar liggen. Wanneer je de 433 modules verwijdert en de twee met een draad verbindt, werkt het dan wel?

People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
diebobo

Golden Member

Die van Niels moet je echt gecodeerd aansturen.. Meen dat het Manchester heet.. Als je daar op zoekt kan je al een eind verder komen..

Zo mooi als jij het nu gedaan hebt hoopte ik ook dat het kon.. Helaassss.

Sjoerd Kreyns

Golden Member

Dat is toevallig!

Ik ben ook ermee bezig.

Ik heb deze code in ASM. Hier maken ze niet gebruik van een USART, maar versturen ze gewoon een 0 als 400uSec en een 1 als 200uSec, met een startpuls van 5MSec.

pic asm code:

;=================================================================================
RF_LEES_BERICHT
	bcf		STOPPEN
	movlw	D'180'				;eerst kijken of RF_IN langer dan 1ms hoog is
	movwf	TELLER_2
rf_lees_bericht_1
	btfss	RF_IN				;direkt stoppen als ...
	goto	rf_lees_bericht_fout;... RF_IN binnen 4,7ms weer laag wordt
	movlw	D'4'				;dan nu even 20us wachten ...
	call	WACHT_5us
	decfsz	TELLER_2,1			;... en dat 180 keer herhalen (180x26us=4680 us)
	goto	rf_lees_bericht_1
	movlw	D'120'				;max. 120x5=600us kijken of RF_IN weer laag wordt
	movwf	TELLER_1
rf_lees_bericht_2
	btfss	RF_IN				;als RF_IN tijdig weer laag is ...
	goto	rf_lees_bericht_3	;... dan verder gaan en eerste byte lezen
	decfsz	TELLER_1,1
	goto	rf_lees_bericht_2
	goto	rf_lees_bericht_fout;als je hier komt dan heeft het te lang geduurd
rf_lees_bericht_3				;we gaan nu bericht inlezen
	clrf	RF_CRC				;vanaf hier CRC berekenen
	call	RF_LEES_BYTE		;verstuurde RF ID (geadresseerde) inlezen en ...
	btfsc	STOPPEN				;... als iets fout gegaan, dan stoppen
	goto	rf_lees_bericht_fout
	btfss	STATUS,Z			;als ontvangen RF_ID ongelijk aan 0 ...
	goto	rf_lees_bericht_fout;... dan stoppen
	bsf		LED_ROOD
	bcf		LED_GROEN
	call	RF_LEES_BYTE		;eerste databyte inlezen en ...
	btfsc	STOPPEN				;... als iets fout gegaan, dan stoppen
	goto	rf_lees_bericht_fout
	movwf	RF_BYTE_IN_1
	call	RF_LEES_BYTE		;tweede databyte inlezen en ...
	btfsc	STOPPEN				;... als iets fout gegaan, dan stoppen
	goto	rf_lees_bericht_fout
	movwf	RF_BYTE_IN_2
	call	RF_LEES_BYTE		;derde databyte inlezen en ...
	btfsc	STOPPEN				;... als iets fout gegaan, dan stoppen
	goto	rf_lees_bericht_fout
	movwf	RF_BYTE_IN_3
	call	RF_LEES_BYTE		;vierde inlezen en ...
	btfsc	STOPPEN				;... als iets fout gegaan, dan stoppen
	goto	rf_lees_bericht_fout
	movwf	RF_BYTE_IN_4
	call	RF_LEES_BYTE		;CRC inlezen en ...
	btfsc	STOPPEN				;... als iets fout gegaan, dan stoppen
	goto	rf_lees_bericht_fout
	movf	RF_CRC,1			;hier CRC controleren: moet nu 0 zijn ...
	btfss	STATUS,Z			;... anders fout
	goto	rf_lees_bericht_fout
	bsf		RF_GEW
	goto	rf_lees_bericht_eind
rf_lees_bericht_fout
	bsf		STOPPEN
rf_lees_bericht_eind
	return

;=================================================================================
RF_SCHRIJF_BERICHT
	movlw	D'3'				;het RF bericht 3 keer versturen
	movwf	AANTAL
rf_schrijf_bericht_1
	bsf		RF_UIT				;startpuls genereren door RF_UIT gedurende ...
	movlw	D'5'				;... 5x200x5=5ms actief te maken
	movwf	TELLER_2
rf_schrijf_bericht_2
	movlw	D'200'
	call	WACHT_5us
	decfsz	TELLER_2,1
	goto	rf_schrijf_bericht_2
	clrf	RF_CRC				;vanaf hier gaan we de CRC berekenen
	movf	RF_ID,0
	call	RF_SCHRIJF_BYTE		;RF_ID versturen
	movf	RF_BYTE_UIT_1,0
	call	RF_SCHRIJF_BYTE		;eerste byte versturen
	movf	RF_BYTE_UIT_2,0
	call	RF_SCHRIJF_BYTE		;tweede byte versturen
	movf	RF_BYTE_UIT_3,0
	call	RF_SCHRIJF_BYTE		;derde byte versturen
	movf	RF_BYTE_UIT_4,0
	call	RF_SCHRIJF_BYTE		;vierde byte versturen
	movf	RF_CRC,0
	call	RF_SCHRIJF_BYTE		;opgebouwde CRC versturen
	bcf		RF_UIT				;RF_UIT weer los laten
	movlw	D'200'				;na RF bericht even 1ms rust inbouwen
	call	WACHT_5us
	decfsz	AANTAL,1
	goto	rf_schrijf_bericht_1
	return

;=================================================================================
RF_LEES_BYTE
	movlw	D'8'				;we gaan nu D0-D7 inlezen ...
	movwf	BIT_NR				;... en houden de teller hiervoor in BIT_NR bij
rf_lees_byte_1
	rrf		BYTE,1				;bits in BYTE 1 positie naar links schuiven
	movlw	D'100'				;100x5=500us wachten en dan bit inlezen
	call	WACHT_5us
	btfss	RF_IN				;als RF_IN nu hoog is ...
	goto	rf_lees_byte_2
	bsf		BYTE,7				;... dan rechter bit in BYTE '1' maken ...
	bsf		BIT
	goto	rf_lees_byte_3
rf_lees_byte_2
	bcf		BYTE,7				;... anders rechtbit '0' laten en ...
	bcf		BIT
	movlw	D'80'				;... nog 400 us wachten ...
	call	WACHT_5us			;... (RF_IN is dan weer hoog geworden)
	btfss	RF_IN				;als RF_IN dan niet hoog, ...
	goto	rf_lees_byte_fout	;... dan foutsituatie en stoppen
rf_lees_byte_3
	movlw	D'40'				;maximaal 200us wachten tot datalijn ...
	movwf	TELLER_1			;... weer laag geworden is
rf_lees_byte_4
	btfss	RF_IN
	goto	rf_lees_byte_7
	decfsz	TELLER_1,1
	goto	rf_lees_byte_4
	movf	BIT_NR,0			;als je hier komt dan heeft het te lang ...
	sublw	D'1'				;... geduurd voordat RF_IN weer laag werd, ...
	btfss	STATUS,Z			;... behalve bij de laatste bit, ...
	goto	rf_lees_byte_fout	;... daar mag het maximaal ...
	movlw	D'250'				;... 250x250x5=0,3 sec. duren
	movwf	TELLER_2
rf_lees_byte_5
	movlw	D'250'
	movwf	TELLER_1
rf_lees_byte_6
	btfss	RF_IN
	goto	rf_lees_byte_7
	decfsz	TELLER_1,1
	goto	rf_lees_byte_6
	decfsz	TELLER_2,1
	goto	rf_lees_byte_5		
	goto	rf_lees_byte_fout	;als RF_IN dan nog niet laag, dan alsnog afbreken
rf_lees_byte_7
	call	CRC_BEREKENEN		;CRC aanpassen op basis van laatste bit (BYTE,0)
	decfsz	BIT_NR,1			;aftellen tot BIT_NR=0
	goto	rf_lees_byte_1
	movf	BYTE,0				;BYTE klaar zetten in werkgeheugen
	goto	rf_lees_byte_eind
rf_lees_byte_fout
	bsf		STOPPEN
rf_lees_byte_eind
	return

;=================================================================================
RF_SCHRIJF_BYTE
	movwf	BYTE				;inhoud werkgeheugen in BYTE bewaren
	movlw	D'8'				;we gaan nu D0-D7 wegschrijven ...
	movwf	BIT_NR				;... en houden de teller hiervoor in BIT_NR bij
rf_schrijf_byte_1
	bcf		RF_UIT				;RF zender eerst uitschakelen gedurende ...
	movlw	D'40'				;... 40x5=200us
	call	WACHT_5us
	movlw	D'80'
	bsf		BIT					;onderhanden BIT = '1'
	btfsc	BYTE,0				;echter als '0' versturen ...
	goto	rf_schrijf_byte_2
	call	WACHT_5us			;... dan nog eens 80x5=400us uit laten ... 
	bcf		BIT					;... en BIT wordt '0'
rf_schrijf_byte_2
	bsf		RF_UIT				;RF zender weer inschakelen ...
	movlw	D'80'				;... gedurende 80x5=400us
	call	WACHT_5us
	call	CRC_BEREKENEN		;bit verwerken in nieuwe CRC
	rrf		BYTE,1				;bits in BYTE 1 positie naar links schuiven
	decfsz	BIT_NR,1			;aftellen tot BIT_NR=0
	goto	rf_schrijf_byte_1
	return

;=================================================================================
CRC_BEREKENEN					;berekent CRC op basis van de bit BYTE,7
	btfsc	BIT
	goto 	crc_bit_1
crc_bit_0
	btfsc	RF_CRC,0
	goto	crc_bit_ongelijk
	goto	crc_bit_gelijk
crc_bit_1
	btfss	RF_CRC,0
	goto	crc_bit_ongelijk
crc_bit_gelijk
	rrf		RF_CRC,1			;verschuif bits in CRC 1 positie naar rechts
	bcf		RF_CRC,7			;MSB van CRC leeg maken
	goto	crc_berekenen_eind
crc_bit_ongelijk
	rrf		RF_CRC,1			;move bits in CRC 1 position to right
	bcf		RF_CRC,7			;clear MSB van CRC leeg maken
	movlw	B'10001100'			;XOR bits 2,3 and 7 of CRC
	xorwf	RF_CRC,1
crc_berekenen_eind
	return

;=================================================================================
WACHT_5us						;wacht WORKSPACE x 5 us (incl. call, minimaal 2)
	addlw	D'255'
	movwf	TELLER_1
wacht_5us_1
	nop
	nop
	decfsz	TELLER_1,1
	goto	wacht_5us_1
	return

;==================
WACHT_4us						;wacht 4 us (inclusief call)
	return

;=================================================================================
THE_END
	end

Ik heb ook ergens gelezan dat je de zender eerst een aantal Msec aan moet zetten zodat de ontvanger zich in kan stellen.

Ik heb mijn scoop op de (kanaal 1) ingang van de zender en (kanaal 2)uitgang van de ontvanger aangesloten en met deze code komen de signalen overeen. Met de huidige code zoals die overal staat werd de data vervormd.

pic basic code:

;           PIC16F648A:                 +--v--+
;                                       [     ]
;                                       [     ]
;             LED Groen via 1K aan +5V >[     ]< Kristal 16Mhz
;                                       [     ]< Kristal 16Mhz
;                                  GND  [     ]  +5V
;                            Ontvanger >[     ]
;                                       [     ]
;                                       [     ]
;                               Zender <[     ]
;                                       +-----+
DEVICE 16F628A
CONFIG BOREN_ON, CP_OFF, DATA_CP_OFF, PWRTE_ON, WDT_OFF, LVP_OFF, MCLRE_OFF, HS_OSC
XTAL 16
ALL_DIGITAL TRUE
;Poort aliases
LCD_RSPIN                         = PORTA.0           ;LCD
LCD_ENPIN                         = PORTA.1           ;LCD
SYMBOL LED_Groen                  = PORTA.4           ;Led geeft aan of er IR-signaal is.
SYMBOL Ontvanger                  = PORTB.0           ;Ontvanger
SYMBOL SerieelIn                  = PORTB.1           ;Ontvangt via HSERIN data van de bus (USART ingang, RX)
SYMBOL SerieelUit                 = PORTB.2           ;Stuurt via SEROUT data naar de bus  (USART uitgang, TX)
SYMBOL Zender                     = PORTB.3           ;Zender

;        76543210
PORTA = %00000000
PORTB = %00000000
TRISA = %11100011
TRISB = %11110011                                     ;USART uitgang B.2 moet in rust hoog-ohmig zijn
PORTB_PULLUPS ON                                      ;Experiment: B.2 een Uitgang gemaakt.

;Variabelen
;DWord arrays
;Word arrays
;Word variabelen
DIM OntvangenData                 AS WORD             ;Bevat de ontvangen 16-bits data vanuit USART
;Byte variabelen
DIM BD1                           AS BYTE             ;Byte Dummy
DIM Waarde_RF_Ontvangen           AS BYTE             ;Bevat de ontvangen waarde
DIM Waarde_RF_Verzenden           AS BYTE             ;Bevat de te verzenden waarde
DIM Opdracht                      AS BYTE             ;Bevat de uit te voeren Opdracht
DIM Waarde                        AS BYTE             ;Bevat de teruggezonden waarde
;Bit variabelen
DIM ID1                           AS BIT              ;bIt Dummy



CLEAR
DELAYMS 500                                           ;LC-Display stabilisering

GOTO Start                                            ;Spring over de subroutines

;Subroutines                                                                                                            


;Hoofdprogramma                                                                                                         
Start:

FOR BD1 = 1 TO 255
HIGH Zender
DELAYMS 20
LOW Zender
DELAYMS 5            ;data (start)
HIGH Zender
DELAYMS 1
LOW Zender
DELAYMS 3            ;data
HIGH Zender
DELAYMS 1
LOW Zender
DELAYMS 1            ;data
HIGH Zender
DELAYMS 1
low zender
delayms 5
DELAYMS 500
NEXT BD1

GOTO Start  

END
SMD weerstandjes zoeken in grijze vloerbedekking is ook een uitdaging ... 8*1=255 ... Het nadeel van ruimte: Als je het hebt, staat het binnen de kortste keren weer vol.

@Marcob, Met een draad er tussen werkt het ook niet.
Als ik deze voorwaarde er uit haal komen er in een razend tempo allemaal getallen voor bij.

pic basic code:


IF Value[0] = "P" AND Value[1] = "W" THEN 

tussen zender een ontvanger had ik 2 meter zitten lijkt me genoeg.

@Diebobo,

Ik even voor de duidelijkheid geld dat voor deze,

Zender.

Ontvanger.

Kan iemand bevestigen dat deze alleen met "Manchester" ???? werkt

@Sjoerd Kreyns,

Bedankt voor je code!

Van de eerste snap ik niet zo veel. Waarschijnlijk omdat ik nog nooit iets met ASM gedaan heb.

Je laatste is zoals ik het bekijk niet volledig.
correct my if im worng!

www.tinuselectronics.nl Because DIY Electronics Matters!!!!
marcob

Golden Member

Ik heb dezelfde modules gebruikt.
Ik zie dat ik een andere baudrate gebruik
Dit was mijn zend code:

pic basic code:

SEROUT SEND , 396 , [ 65, 65, 65, 65, 65, 65, 65, 85 , 17 , SIGN , TEMP_1 , TEMP_2 , SIGN , TEMP_1 , TEMP_2 , 13 ]

Dit was mijn temp uitlees programma:

pic basic code:

DEVICE 16F877A               ;Gebruik een 16F877A type

;CONFIG CP_OFF, DEBUG_OFF, WRT_OFF, CPD_OFF, LVP_ON, BODEN_ON, PWRTE_OFF, WDT_OFF, HS_OSC

XTAL = 10
ALL_DIGITAL = True

DIM VAR1       AS BYTE              ' We'll only read 8-bits
DIM TELLER     AS BYTE              ; TELLER
DIM Received   AS BYTE              ; Variabelen
DIM Value[10]   AS BYTE
DIM CHECK      AS BYTE
DIM DB1        AS BYTE              ; DUMMY BYTE 1
DIM DB2        AS BYTE              ; DUMMY BYTE 2
DIM DB3        AS BYTE              ; DUMMY BYTE 3
DIM DB4        AS BYTE              ; DUMMY BYTE 4
DIM DB5        AS BYTE              ; DUMMY BYTE 5

DECLARE LCD_DTPIN PORTB.4
DECLARE LCD_ENPIN PORTB.3
DECLARE LCD_RSPIN PORTB.1

HSERIAL_BAUD  = 2400            			 ; Set baud rate
HSERIAL_RCSTA = %10010000  			      ; Enable serial port and continuous receive
HSERIAL_TXSTA = %00100000  			      ; Enable transmit and asynchronous mode
HSERIAL_CLEAR = ON			              ; Optionally clear the buffer before receiving

SYMBOL LED1    = PORTA.2            ; Alias the running led
SYMBOL LED2    = PORTB.0

ON_INTERRUPT GOTO INT_SER                               ; If there is UART activity: goto INT

DELAYMS 500                         ;LCD stabilisering
PRINT $FE,$40,$0E,$0A,$0E,$00,$00,$00,$00,$00
CLS                                 ;Wis eventuele oude tekst uit 

PRINT AT 1 , 1 , "Temp: "

START:

  INTCON.7 = 1                                        ; Enable Global Interrupts
  INTCON.6 = 1                                        ; Enable Peripheral Interrupts
  PIE1.5 = 1                                          ; Enable UART Rx Interrupt
  ON_INTERRUPT GOTO INT_SER
GOTO MAIN

INT_SER:  

  LOW LED2					            ; interrupt led aan
  HSERIN [Received]
  Value[0]  = Value[1]				      ; zet ontvangen waarde in de array
  Value[1]  = Value[2]				      ; en schuif al aanwezige waarden door
  Value[2]  = Value[3]
  Value[3]  = Value[4]
  Value[4]  = Value[5]
  Value[5]  = Value[6]
  Value[6]  = Value[7]
  Value[7]  = Value[8]
  Value[8]  = Received
  CHECK = 0
  IF Value[0] = 65       THEN  CHECK = CHECK +  1 ; controleer startbit
  IF Value[1] = 85       THEN  CHECK = CHECK +  2 ; controleer startbit
  IF Value[3] = Value[6] THEN  CHECK = CHECK +  4 ; contorleer gelijkheid
  IF Value[4] = Value[7] THEN  CHECK = CHECK +  8 ; contorleer gelijkheid
  IF Value[5] = Value[8] THEN  CHECK = CHECK + 16 ; contorleer gelijkheid
  IF CHECK = 31 THEN 
      PRINT AT 1,8, Value[3], DEC Value[4] , "," , DEC Value[5] , 0 , "C "
      PRINT AT 2,1, "Unit = " , DEC Value[2]
  ENDIF
  HIGH LED2
  CONTEXT RESTORE                         	      ; Restore the registers and exit
  GOTO START

MAIN:



WHILE 1=1
  HIGH LED1				      ; hoofdprogramma laat een ledje knipperen
  DELAYMS 500
  LOW LED1  
  DELAYMS 500
WEND

END                                 ;Einde programma
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years

Ik heb ook zo´n zender en ontvanger gekocht maar wel uit een andere actie dus er zou iets verschil in kunnen zitten.

Ik heb het wel aan de gang gekregen. Hierbij mijn code:
Zender:

pic basic code:

DEVICE 16F628A                ;We gebruiken een 16F628A type
CONFIG HS_OSC, WDT_OFF, PWRTE_ON, LVP_OFF, BODEN_OFF, MCLRE_OFF
ALL_DIGITAL TRUE              ;Alle ingangen digitaal
XTAL          = 20            ;Gebruik een kristal van 20MHz

;Algemene constanten
SYMBOL Baud1000I      = 17364   ;2400 Baud Inverted (baudrate voor SEROUT)

;Variabelen declareren
;BYTE
dim i               as byte
dim j               as byte
;        76543210
PORTA = %00000000             ;LED voor dit voorbeeld aanzetten (PIC opstart controle)
PORTB = %00000000             ;PORTB poorten laag
TRISA = %11111111             ;A.0 is uitgang voor de LED (in dit voorbeeld)
TRISB = %11111111             ;USART uitgang B.2 moet in rust hoog-ohmig zijn


CLEAR                         ;Wis alle RAM geheugen
DELAYMS 500                   ;Stabilisatie signalen en voorbeeld LED opstart tijd

j = 0

;GOTO zendbus
goto hoofdlus                 ;Spring over subroutine(s)

 
;SUBROUTINE
ZendBus:                      ;De bus die door het huis loopt
  for i=1 to 5
  SEROUT PORTA.3, Baud1000I, ["Wind", j]
  delayms 20
  next
RETURN
 
;HOOFDPROGRAMMA
HoofdLus:

     j = j + 1
     if j = 9 then
      j = 1
     endif
  gosub zendbus
  delayms 2000
 
goto hoofdlus

Deze telt dus van 0 tot 8 en dan begint het opnieuw.

En voor de ontvanger:

pic basic code:

DEVICE 16F628A                ;We gebruiken een 16F628A type
CONFIG HS_OSC, WDT_OFF, PWRTE_ON, LVP_OFF, BODEN_OFF, MCLRE_OFF
ALL_DIGITAL TRUE              ;Alle ingangen digitaal
XTAL          = 20            ;Gebruik een kristal van 20MHz

;Algemene constanten
SYMBOL Baud1000I    = 17364   ;2400 Baud Inverted (baudrate voor SEROUT)

;Poortnamen
Symbol ShiftData  = PORTa.4
Symbol Latch      = PORTB.1
Symbol ShiftClk   = PORTB.2

;Variabelen declareren
;BYTE
DIM Opdracht        AS BYTE   ;Bevat de laatst ontvangen opdrachtcode
dim Richting        as byte

CLEAR                         ;Wis alle RAM geheugen
DELAYMS 500                   ;Stabilisatie signalen en voorbeeld LED opstart tijd

while 1 = 1                  ;Spring over subroutine(s)

clear opdracht

SERIN PORTA.1, Baud1000I, [WAIT("Wind"), Opdracht]
  
SELECT Opdracht          ;We gaan de variabele 'Weerstand' testen
  CASE 1      ;%76543210       ;Als 'Weerstand' is 4 dan...
    Richting = %00000001              ;..."Vier" op het display zetten
  CASE 2                      ;Als 'Weerstand' is 5 dan...
    Richting = %00000010              ;..."Vijf" op het display zetten
  CASE 3                      ;Als 'Weerstand' is 6 dan...
    Richting = %00000100               ;..."Zes"  op het display zetten
  CASE 4                      ;Als 'Weerstand' is 4 dan...
    Richting = %00001000              ;..."Vier" op het display zetten
  CASE 5                      ;Als 'Weerstand' is 5 dan...
    Richting = %00010000              ;..."Vijf" op het display zetten
  CASE 6                      ;Als 'Weerstand' is 6 dan...
    Richting = %00100000               ;..."Zes"  op het display zetten 
  CASE 7                      ;Als 'Weerstand' is 4 dan...
    Richting = %01000000              ;..."Vier" op het display zetten
  CASE 8                      ;Als 'Weerstand' is 5 dan...
    Richting = %10000000              ;..."Vijf" op het display zetten
  CASE ELSE                   ;Anders...
    Richting = %01010101     ;..."Andere waarde" op het display zetten
ENDSELECT
  
SHOut ShiftData, ShiftClk, lsbfirst,[Richting]
pulsout Latch,5   
delayms 1000 
 
wend
end

Dit leest de ontvangen code en stuurt de data naar een schuifregister.

Daarnaast had ik ook antenne's erop gesoldeerd. Ik weet niet of dit verschil maakt.

Wat me wel opviel aan jou code was dat je snelheid anders is dan die van mij.
Ook de SEROUT is wat anders dan die van mij.
Mijn zender zend "wind" als een soort wachtwoord en de ontvanger leest de data pas als hij ook "Wind" ontvangen heeft.
Ook als je jou programma runt zal de waarde Teller ongedefinieerd blijven. Je geeft wel aan dat het een byte is, maar geeft het geen waarde.

Ik heb mijn code trouwens gedeeltelijk van de PicBasic website van Frits. http://www.picbasic.nl/ Onder projecten moet je dan de tweede link openen (domotica). Vanaf halverwege / driekwart staat ook wat over de 433 MHz zender.

Ik wil iedereen bedanken voor zijn hulp!
Na het aanpassen van de Baudrate volgens de post van Marcob werkte het. Yes!!

Als het systeem werkt zal ik mijn volledige code posten zodat andere er ook wat aan hebben.

Iedereen bedankt!

www.tinuselectronics.nl Because DIY Electronics Matters!!!!

Zo we zijn ruim een week verder en het werkt nu volledig.

Omdat het nogal een stuk code is geworden kan het hier bekeken worden.
Dit hout het topic overzichtelijk

Het mogen duidelijk zijn dat ik mijn huis code heb aangepast. (Dit ivm lol broeken :) )
Mocht iemand het gaan gebruiken vergeet dan niet om de SCHAAL van de potmeter en de ldr aan te passen.

voor de foto's van het project kan u hier terecht

Nogmaals bedankt voor de hulp!!

www.tinuselectronics.nl Because DIY Electronics Matters!!!!
Sjoerd Kreyns

Golden Member

Dat is weer een mooi project, Tinus016!

SMD weerstandjes zoeken in grijze vloerbedekking is ook een uitdaging ... 8*1=255 ... Het nadeel van ruimte: Als je het hebt, staat het binnen de kortste keren weer vol.

Bedankt!.

Schema van dit project moet ik nog even bijwerken dan zet ik die er ook nog even bij.

www.tinuselectronics.nl Because DIY Electronics Matters!!!!