Giter VIP home page Giter VIP logo

usdx's People

Contributors

abbrev avatar adecarolis avatar howard0su avatar threeme3 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

usdx's Issues

QCX resets after transmit and VOX not working

Hello,
I've flashed my QCX with the 1.01s firmware and performed the hardware modifications detailed on the master branch (not the experimental one).

However, I'm having trouble using VOX and transmitting. When enabling VOX, it shows up as enabled, however the radio doesn't respond to sound being injected on the microphone. This might be some issue with my cabling, which I have yet to check, but I wanted to report anyway, in case it relates to the next problem:

Immediately after transmitting, my QCX resets even if VOX is not enabled. At first I suspected a power issue, but measuring the voltage and keeping the PTT pressed showed power was actually okay. Also, I can transmit indefinitely, the radio only resets when I release the PTT.

How do you thing I can troubleshoot my problems? How can I help solving these issues?

Thanks for the great work!
PY3PK

Switching off automatic decoder CW

In the latest version, the CW automatic decoder cannot be switched off. This is very annoying for us, what we can do CW better than that decoder. Please return the shutdown. Thank you. Milan OK1IF

1.3" SSH1106 OLED not working in v1.02w (and a weird fix)

In v1.02w using #define OLED_SH1106 the OLED does not work.
Using #define OLED_SSD1306 display turns on, but it is very glitchy.

To fix this, I simply moved 0x8D, 0x14, // Set charge pump, internal VCC out of, and above #ifndef OLED_SH1106. This made the display turn on without any glitches.

The display was also shifted by a few pixels to the right, so to fix this I removed:

#ifdef OLED_SH1106
    _oledX += 2; // SH1106 is a 132x64 controller.  Use middle 128 columns.
#endif

73 de LY5NF

Freezes in TX with v 1.02e?

Hi Guido,

I recently updated from the 5/17 v 1.02d QCX-SSB.ino to the 6/3 v 1.02e.

After reboot, everything seemed good until I clicked the right button and then radio went in to TX and froze. After another reboot it was still frozen in TX, and the frequency was missing from the display.

The hardware is the Rev 5 QCX board built per Manuel's v 1.02 instructions. I have not done the 'magic witchery mod'. I also have a 10m LPF installed on the board.

I tried a few older commits between 6/3 and 5/17, but it did the same thing.

I am now back to the 5/17 commit and everything is back to normal.

Any ideas?

Cheers,
Casey

PS - Below are my first ever reports on 10m and FT8 thanks to your project!

first qcx-ssb ft8 rx reports 2020 06 03

Exiting the 'Menu' when using CAT_EXT

Hello!

The following CAT commands work pretty well.

;ID;

;FD;

;FA00014074000;

;UK84;

;UK44;

By using the ;UK84; CAT_EXT command, I can enter the 'Menu' and change various settings.

However, I have been unable to find a CAT command which will allow me to exit this 'Menu' on the uSDX. Is there a CAT command which allows exiting the 'Menu' on the uSDX?

Thanks for the help, and for this superb, and fun project.

Cheers and 73,
Dhiru (VU3CER)

Recent versions don't compile if "#define KEYER" is commented out.

Hi! Minor problem... ditTime is defined when KEYER is defined. However, it used in code that compiles when KEYER is not defined. Looks like it's related to semi QSK change. The following shows the compile error when #define KEYER is commented out.

/home/adrian/Downloads/QCX-SSB/QCX-SSB.ino: In function 'void switch_rxtx(uint8_t)':
QCX-SSB:3119:37: error: 'ditTime' was not declared in this scope
       semi_qsk_timeout = millis() + ditTime * 8;
                                     ^~~~~~~
/home/adrian/Downloads/QCX-SSB/QCX-SSB.ino:3119:37: note: suggested alternative: 'nbtime'
       semi_qsk_timeout = millis() + ditTime * 8;
                                     ^~~~~~~
                                     nbtime
exit status 1
'ditTime' was not declared in this scope

Suggestion: better volume control when using the M0PUB AGC

The new slow AGC algorithm already uses a multiply, so how about, if it's active, make the AGC threshold a function of volume and skip the right-shift volume control (which sounds like crud at any setting below 8). There should be no CPU penalty — the thresholds can be in a PROGMEM lookup table (just 52 bytes or so) and eliminating the right-shift should about make up for the cost of fetching them to register.

I'd try it myself and send a PR, but I'm more of a software guy than a hardware guy; I bought an eBay unit and I haven't gotten it disassembled far enough to get at the ISP connector yet :)

Blank screen on my USDX+ hf transceiver, all functions work

I can receive and transmit, change bands, but screen is blank. Can’t see frequency or menu. Backlight on screen works, just no alpha/numeric text.
IMG_5105
IMG_5104
How can I get it to work. Is there a reset or a way to update to get it to work again.

Switching Mode with Right Button causes two rewrites of second row of LCD.

Hi!

Here's a trace of the traffic that goes to the LCD when somebody pushes the right button to switch mode (USB to CW in this case). The first column is RS, the second column is the 8 bits of command/data, and the rest of the line shows the contents of the ddRam. The ddRam data also shows the cursor position which, unfortunately, obstructs that one byte.

Anyway, the issue is that there are two rewrites of the second line of the display when only one is required. It looks like the first rewrite is showing what would appear if menu mode was 1 but is immediately overwritten with the info that's supposed to appear.

This is not a big deal but I thought I'd mention it anyway!

Adrian / kr0dak

0 11000000 uSDX.                                                           _14,074,00 USB R                                                
1 01001101 uSDX.                                                           M_4,074,00 USB R                                                
1 01101111 uSDX.                                                           Mo_,074,00 USB R                                                
1 01100100 uSDX.                                                           Mod_074,00 USB R                                                
1 01100101 uSDX.                                                           Mode_74,00 USB R                                                
1 00111010 uSDX.                                                           Mode:_4,00 USB R                                                
1 00100000 uSDX.                                                           Mode: _,00 USB R                                                
1 01000011 uSDX.                                                           Mode: C_00 USB R                                                
1 01010111 uSDX.                                                           Mode: CW_0 USB R                                                
1 00100000 uSDX.                                                           Mode: CW _ USB R                                                
1 00100000 uSDX.                                                           Mode: CW  _USB R                                                
1 00100000 uSDX.                                                           Mode: CW   _SB R                                                
1 00100000 uSDX.                                                           Mode: CW    _B R                                                
1 00100000 uSDX.                                                           Mode: CW     _ R                                                
1 00100000 uSDX.                                                           Mode: CW      _R                                                
1 00100000 uSDX.                                                           Mode: CW       _                                                
1 00100000 uSDX.                                                           Mode: CW        _                                               
1 00100000 uSDX.                                                           Mode: CW         _                                              
1 00100000 uSDX.                                                           Mode: CW          _                                             
1 00100000 uSDX.                                                           Mode: CW           _                                            
1 00100000 uSDX.                                                           Mode: CW            _                                           
1 00100000 uSDX.                                                           Mode: CW             _                                          
1 00100000 uSDX.                                                           Mode: CW              _                                         
1 00100000 uSDX.                                                           Mode: CW               _                                        
1 00100000 uSDX.                                                           Mode: CW                _                                       
1 00100000 uSDX.                                                           Mode: CW                 _                                      
1 00100000 uSDX.                                                           Mode: CW                  _                                     
1 00100000 uSDX.                                                           Mode: CW                   _                                    
0 11000000 uSDX.                                                           _ode: CW                                                        
1 00000110 uSDX.                                                           ._de: CW                                                        
1 00110001 uSDX.                                                           .1_e: CW                                                        
1 00110100 uSDX.                                                           .14_: CW                                                        
1 00101100 uSDX.                                                           .14,_ CW                                                        
1 00110000 uSDX.                                                           .14,0_CW                                                        
1 00110111 uSDX.                                                           .14,07_W                                                        
1 00110100 uSDX.                                                           .14,074_                                                        
1 00101100 uSDX.                                                           .14,074,_                                                       
1 00110000 uSDX.                                                           .14,074,0_                                                      
1 00110000 uSDX.                                                           .14,074,00_                                                     
1 00100000 uSDX.                                                           .14,074,00 _                                                    
1 01000011 uSDX.                                                           .14,074,00 C_                                                   
1 01010111 uSDX.                                                           .14,074,00 CW_                                                  
1 00100000 uSDX.                                                           .14,074,00 CW _                                                 
1 00100000 uSDX.                                                           .14,074,00 CW  _                                                
1 00100000 uSDX.                                                           .14,074,00 CW   _                                               
1 00100000 uSDX.                                                           .14,074,00 CW    _                                              
1 00100000 uSDX.                                                           .14,074,00 CW     _                                             
1 00100000 uSDX.                                                           .14,074,00 CW      _                                            
1 00100000 uSDX.                                                           .14,074,00 CW       _                                           
1 00100000 uSDX.                                                           .14,074,00 CW        _                                          
1 00100000 uSDX.                                                           .14,074,00 CW         _                                         
1 00100000 uSDX.                                                           .14,074,00 CW          _                                        
0 11001111 uSDX.                                                           .14,074,00 CW  _                                                
1 01010010 uSDX.                                                           .14,074,00 CW  R_                                               
0 11000111 uSDX.                                                           .14,074_00 CW  R                                                
0 00001110 uSDX.                                                           .14,074_00 CW  R                                                

Internal Pull-Up issue with minicore

Hi!

First, thank you for this project, it's really cool!

I am playing with your code and I have an issue with the INPUT_PULLUP.

When I use MiniCore (version 2.1.3 in the arduino IDE 1.8.16), the PD7 and PD7 lines are not pulled up. This causes the rotary encoder not working. If I add two 10k resistors the rotary encoder works well.
If I use the regular arduino Uno board (in the IDE), the pull-up function works fine. But I encounter another issue : the pull-up is applied on all of the input, especially on the PC3 input. I get about 1,2V when no button is pressed. This causes an issue with the voltages thresholds.

Did you already have this behavior ?

Slow AGC issue on strong signals

Hi Guido,

There is an issue with the slow AGC algorithm. When receiving a very strong signal, the AGC stays blocked and never increases the gain. I modified the code to display the centiGain value on the S-meter, and when this happens I can see that the centiGain value is 15. This causes the gain to never increases when the strong signals disappears because 15 >> 4 = 0. We needs to stay > to 16.

To solve this issue, I modified the strong signal condition, from :

if(HI(abs(out)) > HI(1536)){
to
if(HI(abs(out)) > HI(1536) && centiGain > 16){

Maybe there is a more elegant way to solve this issue but it works on my side.

Regards,

Sebastien.

Manufacturer defect and replacement of IRF510 in usdr qrp transceiver.

Hello,
20231118_232318
20231118_232216
20231111_113032
20231116_172214

I purchased the USDR QRP Tranceivers radio. Unfortunately, the radio never worked on broadcast. When I opened the device, I noticed that the IRF 510 component was not correctly soldered to the circuit. 1 pin was not soldered. See in PJ. I am looking for the diagram of the electronic circuit of this uSDR QRP Transciever device ? (10 watt model with external power supply). Do you have ?
What do you think about this problem ?

Thank you for your help.

  • Best Regards,

Filter BW for TX is capped at a max of 2.4kHz

0 Hz - 5kHz sweep test while transmitting into a dummy load using different Filter BW settings:
5khz sweep full bw
5khz sweep 3khz bw
5khz sweep 2 4khz bw
5khz sweep 1 8khz bw

As you can see, Full, 3kHz, 2.4kHz don't do anything - the radio still transmits with a bandwidth of 2.4kHz. Setting it to 1.8kHz finally does work.

Also, frequencies higher than 2.4/1.8 kHz fold over (is aliasing the right term here?) and therefore the spectrum does not look clean.

Is the TX filter BW cap of 2.4kHz intentional or is this a bug?

Settings used:
TX Drive: 2
Noise gate: 4
PA min bias: 0
PA max bias: 128

Software and hardware:
v1.02w firmware
DL2MAN sandwich

S- meter zero/calibrating

The S meter shows a value of 4 when the input is closed. I would like to ask how to set it to 0 or calibrate it.
Is it possible at all?
Thank you!
Ferenc.

Lcd flickers messed up, displaying random letters

Hello Mr. Guido PE1NNZ
Thank you very much for sharing this great program, I want to try to follow what you have done but after VERSION "1.02a" upload was successful, I got a messed up letter on the LCD, it doesn't work as it should, can you give advice and help to solve it? correctly.
Forgive my English is not good, thank you.

Delay lines

Hi Guido,
the delay lines may include a bug or an extra element which can be removed.
For example: https://github.com/threeme3/QCX-SSB/blob/1e97ccae49598a3068d1127e87b88c947348909b/QCX-SSB.ino#L1810-L1813

The current value gets written into v[7] but in the end, v[7] is also copied into v[6] causing the delay line to be shortened to 7 elements instead of 8. If the lines 1811 and 1813 would be swapped, we would get a delay line with 8 elements. Or cut the array to 7 elements and go with i = v[0]; v[0] = v[1]; v[1] = v[2]; v[2] = v[3]; v[3] = v[4]; v[4] = v[5]; v[5] = v[6]; v[6] = ac2 >> att2; - dunno what is intended here :).

Same applies to:
https://github.com/threeme3/QCX-SSB/blob/1e97ccae49598a3068d1127e87b88c947348909b/QCX-SSB.ino#L1870-L1873
https://github.com/threeme3/QCX-SSB/blob/1e97ccae49598a3068d1127e87b88c947348909b/QCX-SSB.ino#L1963-L1966
https://github.com/threeme3/QCX-SSB/blob/1e97ccae49598a3068d1127e87b88c947348909b/QCX-SSB.ino#L1984-L1987

73, DC1MP

Entry into menumode 1 only displays correctly on first entry.

Repro steps:

  1. Start uSDX
  2. Press left button
  3. Note that 1.1 Volume and +12 are displayed indicating that menu mode 1 has been entered.
  4. Press right button
  5. Note that we're now in menu mode 0, according to display.
  6. Press left button (and resist urge to press it again if you don't get what you expect)
  7. Note that display does not change.
  8. Press left button
  9. Note that 1.1 Volume and >+12 is displayed indicating that menu mode 2 has been entered.

I believe this is happening because prev_menumode is initialized to 0 but never ever returns to 0 because it's only ever changed inside an if (menumode != 0). As a result, going into menu mode 1 results in a correct display update only the first time the left button is pressed.

Speed CW BUG

Hi Guido. There is a small bug in version 1.02r. The set CW speed does not correspond to reality. E.g. set to 16WPM is actually 19WPM. Milan OK1IF

CW message auto tx broken in 1.02w

I'm trying out the CW auto tx function in 1.02w. It doesn't work, just shows a 0 in the display and exits. I don't know if this is not yet implemented in this version (a note in the definition header would have saved me and other people some time) or if it was working but it was seriously broken in this version.

ATS link in the README.md is bad

Hi Guido,
For some reason the link for ATS in the Readme is going to the main yahoo page or something, not anything relevant.
Thanks for your great work here, and for the references!
73,
Rob
KL7NA

2m band

Hi, in source code is in band variable 2m frequency. Will the transmitter works in 2m band ? and how about receiving ? My idea is down converter to 28 MHz.

73 Ondra OK1CDJ

Support WSPR

It now has some ROM space to add the support to transit WSPR beacons.

We can create a simple webpage to encode the data of the callsign, position, 5w for WSPR. This will creates a symbol list with 162 4FSK symbols. It can combined into 81 uint8_t if concerning the space. Then it can be compiled into the firmware.

Introduce a new mode called WSPR to transmit. The precise timestamp can be feed by human by click the button to give a precise start time. Then the machine can measure the time. Later on, we can add the support reading from GPS.

WSPR mode can have the following parameters:

  1. idle time -- how much slot to become idle.
  2. bands -- transit on how many bands
  3. bands random - random select bands or one-by-one order.

Thoughts? I need some help to guide me how to do the transition of WSPR symbols.

Add menu item

thanks  I have a question: I would like to add an item to the menu using your comment: # define N_ PARAMS 44+4//number of (visible) parameters//visible menu items and enum params_ t also modified switch (id) {//Visible parameters
After the case ADD is completed, the newly added menu item in USDX displays garbled code. I don't know where the problem is

Split out ino file into multi files

It is inconvenient to maintain such big file. Also this limit us to build the different firmware for the different board by default. I would suggest to do the following folder structure to organize the code instead:

src/*.h -> the main source code. We can split the code into multi .h files like cat.h, radio.h, menu.h, globals.h, lcd1602.h, si5351.h, led.h, debug.h
QCX-SSB/QCX-SSB.ino -> the build folder to build QCX-SSB firmware. This ino contains the definition and a serial of includes to include the files in src/
uSDX/uSDX.ino -> the build folder to build uSDX firmware.
uSDX_ABC/uSDX_ABC.ino -> another build for another board.

Thoughts?

Extreme redundancy of LCD updates when menumode > 0

Hi! When menu mode is > 0, the following code in loop() updates the LCD on every iteration. Could you make the update happen only when it's actually required? I'm experimenting with a display option that would greatly benefit from not being overwhelmed by redundant LCD updates.

  bool param_change = (encoder_val != 0);
  if(menumode != 0){  // Show parameter and value
    if(menu != 0){
      paramAction(UPDATE_MENU, menu);  // update param with encoder change and display

I tried a version that defined some new change conditions and added an if (param_change || menumode_change || menu_change) before the paramAction call, but I'm not confident that I understand the loop logic well enough to submit it as a reasonable pull request.

In the receive description of the README, I think Q6 is a typo, and it should be Q5.

The sentence where I believe Q6 should be Q5 is:

Three embedded attenuators are available for optimally using dynamic range; the first attenuator is the RX MOSFET switch Q6 responsible for 20dB attenuation, the second attenuator is ADC range (1.1V or 5V) selected by the ATMEGA ADC analog reference (AREF) logic and is responsible for 13dB attenation, the third attenuator is a pull-down of an analog input on the ATMEGA with a GPIO port responsible for 53dB attenation.

Rob

Changing version number causes continual reset every power-up - bug

Seems to be that a variable is the wrong size:-
Line 4092: uint8_t eeprom_version;
Needs to be:-
uint16_t eeprom_version;
As VERSION requires a 16-bit variable to hold the fixed format serial.
This can cause continual resetting if the version is changed during reprogramming, because the reset code compares the 16-bit VERSION value with the stored 8-bit version, dependant on the serial number set and truncation effect.

AGC low volume bug

Seems like sometimes the AGC does not recover. The easiest way I found to reproduce this bug is to quickly switch between all ham bands by double clicking the rotary encoder. The volume will become very low. Power cycling the radio brings the volume back to normal levels.

Tested on latest feature-rx-improved firmware.

Uncommenting "#define MOX 1" results in compile errors.

In order to re-enable MOX, I uncommented the #define MOX 1 line. Unfortunately, this leads to compile errors, presumably because the symbol MOX is used in the definition of enum params_t. Perhaps change #define MOX 1 to define MOX_ENABLED 1 and change the corresponding #ifdef MOX directives to #ifdef MOX_ENABLED?

11 meter band request

Hello folks !!! cogartulations for the wonderfull code !!!!!
Is it possible to include the 11 meter band in the trasnmiter bands ???
I am ham operator, as well, CB operator...
enabling 11 meter would be a very usefull feature !!!

OLED SSD1306 128 x 64 (cheap, common (China) 0,91" I2C )

Hi Guido,

Amongst fellow uSDX'rs I found troubles with my OLED's 1306 if I do not adapt the latest (since november 22) "m" firmware:
line 687: #define BRIGHT 1 ( must be un-comment)
and/or
line 699: 0x81, /32/ 0x7F, // Set contrast control register
to: 0x81, /128/ 0x7F, or: 0x81, /64/ 0x7F,
However with (much) lower brightness if # define BRIGHT 1 is commented
Furthermore some characters, like the ones used in the uSDX banner and VFO a / b indicators show up unreadable / unrecognizable.
Personally: I do not like the "line printer, interlaced characters" that show up on the OLED, knowing that it can be beautiful sharp (and even display 5 very good readable lines)
I found a SSD1306 library (maybe you know it already) with fast I2C :

https://github.com/greiman/SSD1306Ascii

and used it to very simply replace code for an LCD 2004 in an Arduino SWR / PWR meter project and even succeeded in
putting more information on the display.
Please check if this library could make things easier for the OLED driver impact (and nicer for the looks :-)

73' s
Cees, PE1DDA

Dead audio when using VOX with SSB mods

Hello,
I've finally made this project work on my QCX and performed only the SSB modifications. What I noticed is that, when VOX is enabled, the RX audio disappears (just noise), even when VOX isn't triggered (V showing on LCD, not transmitting). I'm running v1.02a and my RX audio works normally when VOX is disabled.

Main screen banner is overwritten by decoded CW after switching off CW decoder

Minor issue:

  1. Power on uSDX
  2. Go to CW Decoder setting and switch ON
  3. Return to main screen
  4. Allow decoded characters to accumulate
  5. Go to CW Decoder setting and switch OFF
  6. Return to main screen

What's wrong: When returning to the main screen in the final step, the "uSDX▶" banner briefly appears but is immediately overwritten by the previously decoded CW data.

QCX+

Will you be making a guide/new version for the new QCX+ transceiver. It seems like QRP labs are fully stopping the production of them and switching to the QCX+.

VOX not enabled using menu

Using 1.02h code

For a long time I was not able to get the VOX to work. After troubleshooting and finding no problem, I finally tried enabled VOX using the Right Button Long and then it worked. So setting the VOX on using the menu does not seem to enable VOX, but the Right Button Long does. I have low RF output but I know that is caused by the LPF and I can fix that. Except for this issue, everything is working great, working FT8 on 30 M. Started with a new QCX+ and followed the modification instructions. Thanks for all your work

73, Greg
KD4VV

27Mhz

Hello
Would this device be possible to use it to transmit and receive in 27Mhz (Citizen Band with 40 channels) possibly with SSB (USB and LSB)?

I think it would be great coupled with JS8Call on a RaspberryPi4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.