Loading...
 

Seven Line Hellscriber Painter

// Seven Line Hellscriber Painter  
   
 #include <stdint.h>  
 #include <TFT.h>  
   
 int analogPin = 5; // The audio input pin  
 int analogPot1 = 4; // Lower Limit Pot pin  
 int analogPot2 = 3; // Upper Limit Pot pin  
   
   
 int x, y, x2; // plotting varables  
 int sig = 0; // Audio signal varable   
 int pot1, pot2; // Analog pot values   
 int greendot, dot; // The Hellscrieber dot varables  
 int lower, upper; // Contrast mapped pot values  
   
   
   
   
 void setup()  
 {  
   
 Tft.init(); //init TFT library  
   
 }  
   
 void loop()  
 {  
  // Each Line is 28 pixels high  
  for (int y=0; y<320; y++)  
  {  
  for (int x=215-x2; x<229-x2; x++)  
  {  
   sig=analogRead(analogPin); // signal input  
   pot1=analogRead(analogPot1); //get lower limit  
   pot2=analogRead(analogPot2); //get upper limit  
     
   lower=map(pot1,0,1023,0,511); // map pot1 to lower range  
   upper=map(pot2,0,1023,512,1023); // map pot2 to upper range  
     
   dot=map(sig,lower,upper,0,63); // Signal mapped into 5 bits with a lower & upper limit for contrast  
     
   greendot= dot << 5; // shift the dot value into the green range of the display RGB 565  
     
   Tft.setPixel(x, y, greendot); // plot green dot  
   Tft.setPixel(x+13 ,y ,greendot); // plot sample green dot again shifted by 14 pixels  
     
   delayMicroseconds(3480L); // master time delay for Hellschreiber  
   
  }  
  }  
  x2=x2+35; // paint line offset with boundary to seperate each line with black space  
  if(x2>210) x2=0; // if seventh line, start at the top again  
 }



I found that the x and y origin on my display was slightly different to yours so had to modify your code a bit. I've also produced a "large font" version of the code which makes the displayed characters twice as big but this does mean less lines on the screen, 3 instead of 7. See code below:

// Seven Line Hellscriber Painter WA6PZB
// modified by G8AGN to use UTFT LCD library 8 March 2015
// 14 March 2015 double size characters

#include 
extern uint8_t BigFont[];

int analogPin = 5; // The audio input pin 
int analogPot1 = 4; // Lower Limit Pot pin 
int analogPot2 = 3; // Upper Limit Pot pin 

// 2.4" 320x240 TFT display using ILI9325C controller
//UTFT myGLCD(ITDB24,38,39,40,41);

// 3.2" 320x240 TFT display using SSD1289 controller
UTFT myGLCD(SSD1289,38,39,40,41);



int x, y, y2=239; // plotting variables 
int sig = 0; // Audio signal variable 
int pot1, pot2; // Analog pot values 
int dot; // The Hellscrieber dot varable 
int lower, upper; // Contrast mapped pot values 




void setup() 
{ 
myGLCD.InitLCD();
myGLCD.clrScr(); 
myGLCD.setFont(BigFont);
int Xsize=myGLCD.getDisplayXSize();
int Ysize=myGLCD.getDisplayYSize();
Serial.begin(9600);
Serial.print(Xsize);
Serial.print(" ");
Serial.println(Ysize); 
} 

void loop() 
{ 

// Each Line is 28 pixels high 
for (int x=319; x>=1; x-=2) 
{ 
for (int y=y2-30; y<y2; y+=2) 
{ 
sig=analogRead(analogPin); // signal input 
pot1=analogRead(analogPot1); //get lower limit 
pot2=analogRead(analogPot2); //get upper limit 

lower=map(pot1,0,1023,0,511); // map pot1 to lower range 
upper=map(pot2,0,1023,512,1023); // map pot2 to upper range 

dot=map(sig,lower,upper,0,255); // Signal mapped into 8 bits with a lower & upper limit for contrast 


myGLCD.setColor(0, dot, 0); 
myGLCD.drawPixel(x,y); // plot green dot
myGLCD.drawPixel(x-1,y); 
myGLCD.drawPixel(x,y-1);
myGLCD.drawPixel(x-1,y-1);

myGLCD.drawPixel(x,y-30); // plot sample green dot again shifted by 14 pixels 
myGLCD.drawPixel(x-1,y-30);
myGLCD.drawPixel(x,y-31);
myGLCD.drawPixel(x-1,y-31);
delayMicroseconds(3320); // master time delay for Hellschreiber 

} 
} 
y2=y2-70; // paint line offset with boundary to separate each line with black space 
if(y2<30) 
{
y2=239; // if seventh line, start at the top again 
myGLCD.clrScr(); 
}
} 




Sketch: 

// Seven Line Hellscriber Painter 
// Software from WA6PZP adapted by PY2OHH for the display 
// TFT 128x160 with the ST7735. With 160 pixels horizontally 

#include <TFT.h> 
#include <SPI.h> 

int analogPin = 5; // The audio input pin 
int analogPot1 = 4; // Lower Limit Pot pin 
int analogPot2 = 3; // Upper Limit Pot pin 


int x, y, x2 = 0; // plotting varables 
int sig = 0; // Audio signal varable 
int pot1, pot2; // Analog pot values 
int greendot, dot; // The Hellscrieber dot varables
int lower, upper; // Contrast mapped pot values 


#define cs 10 // Arduino pins for display 
#define dc 8 
#define rst 9 

TFT TFTscreen = TFT (cs, dc, rst); 

void setup () 
{ 
  TFTscreen.begin (); 

  TFTscreen.background (255, 0, 0); 
} 

Void loop () 
{ 
  for (int y = 0; y <159; y ++) 
  { 

    for (int x = 14 + x2, x> 0 + x2; x--) right // 
      // for (int x = 0 ; x = 14; x ++) // this line prints the characters in mirror or reverse 

    { 

      sig = analogRead (analogPin); // signal input 
      pot1 = analogRead (analogPot1); // get lower limit
      pot2 = analogRead (analogPot2); // get upper limit 

      lower = map (pot1, 0, 1023, 0, 511); // map pot1 to lower range 
      upper = map (pot2, 0, 1023, 512, 1023); // map pot2 to upper range 

      dot = map (sig, lower, upper, 0, 255); // Signal mapped with a lower & upper limit for contrast 
      greendot = dot; 

      TFTscreen.stroke (0, greendot, 0); 
      TFTscreen.point (y, x); 

      TFTscreen.point (y, x + 13); 


      delayMicroseconds (3480L); // master time delay for Hellschreiber 

    } 
  } 
  x2 = x2 + 32; // paint line offset with boundary to seperate each line with black space 

  if (x2> 114) x2 = 0; 

} 


Frequencies Segment/Net name Mode Comments Website
3559 Feld Hell Digital   http://feldhellclub.org/
3575 Feld Hell Digital   http://feldhellclub.org/
3582-3589 Feld Hell Digital   http://feldhellclub.org/
7030-7040 Feld Hell Digital   http://feldhellclub.org/
7067-7069 Feld Hell Digital   http://feldhellclub.org/
7075-7082 Feld Hell Digital   http://feldhellclub.org/
10135-10145 Feld Hell Digital   http://feldhellclub.org/
14063 Feld Hell Digital Feld Hell watering hole  
14063-14069 Feld Hell Digital Common Feld Hell range  
14068 Feld Hell Digital   http://feldhellclub.org/
14073 Feld Hell Digital Feld Hell watering hole 2  
14075-14082 Feld Hell Digital   http://feldhellclub.org/
14075-14082 Feld Hell Digital This is the old Feld Hell range, no longer in use  
18101-18107 Feld Hell Digital   http://feldhellclub.org/
21063-21070 Feld Hell Digital   http://feldhellclub.org/
24920-24925 Feld Hell Digital   http://feldhellclub.org/
28063-28070 Feld Hell Digital   http://feldhellclub.org/
28100-28110 Feld Hell Digital   http://feldhellclub.org/



Where can I find Hell signals?
In general, here is where you'll find most Hell activity.  As with any ham radio mode, these are suggested frequencies but not etched in stone, so please listen first before transmitting, as you're also likely to hear MFSK, Olivia, BPSK, JT65, and other digital modes on or near these frequencies. Also, check https://hamspots.net/ for current activity.
 
160 METERS 1.843 to 1.844 (FT8 took over our existing frequency at 1.840)
  80 METERS 3.576 to 3.584 (FT8 took over our existing frequency at 3.573)
  40 METERS 7.077 to 7.086
  30 METERS 10.137 10.144 (Region I)
  20 METERS 14.063 (PREFERRED), 14.073 (Note 1)
  17 METERS 18.104 
  15 METERS 21.074 
  12 METERS 24.924 
  10 METERS 28.074
    6 METERS 50.286

Recommended Feld Hell Frequencies
160 meters: 1.840 MHz
80 meters: 3.574-3.584 MHz
40 meters: 7.077-7.084 MHz
30 meters: 10.137-10.144 MHz
20 meters: 14.063 MHz
17 meters: 18.104 MHz
15 meters: 21.074 MHz
12 meters: 24.924 MHz
10 meters: 28.074 MHz
6 meters: 50.286 MHz